[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: g++-2.95 statically compiling

From: Paul Pluzhnikov
Subject: Re: g++-2.95 statically compiling
Date: Sun, 21 Jan 2007 07:04:13 -0800
User-agent: Gnus/5.1006 (Gnus v5.10.6) XEmacs/21.4 (Jumbo Shrimp, linux)

fangee <> writes:

> As I can recall, I was able to static compiling it and having it run
> on linux systems where no g++ nor libstdc++ were installed.

I see. Your goal is to "get rid of dynamic" dependency.

> Recently I discovered that I lost the executable and so I wanted to
> recompile it. As it seems I cannot static compile it again, but
> linking with '-rpath .' I only have to put libstdc++ in the same
> directory where the executable (dinamycally compiled) is.

Your solution works only if you run your exe from the same directory
where resides. E.g.

  mkdir /tmp/foo
  cp a.out /tmp/foo
  cd /tmp/foo && ./a.out               # works
  cd ../ && ./foo/a.out                # doesn't work
  cd $HOME; PATH=/tmp/foo:$PATH; a.out # doesn't work

If copying 2 files to the target system (a.out and is acceptable, a better solution
is to use '-Wl,-rpath,$ORIGIN'. This tells the dynamic loader to look
for libraries in the same place where the executable was loaded from
(as opposed to "in current directory").

Alternatively, here is a recipe that eliminates dynamic,
while leaving the rest of the executable dynamically linked:

  ln -s $(g++ -print-file-name=libstdc++.a) ./
  g++ -o a.out main.o ... -L. 
  rm -f ./libstdc++.a 

In order to understand recursion you must first understand recursion.
Remove /-nsp/ for email.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]