4

プログラムの場合、静的glibcライブラリ(変更したもの)をリンクしていました。私のmakefileは次のようになります。

CXX = g++
CXXFILES = main.c

CXXFLAGS = -g -o prog -D_GNU_SOURCE
LIBS = ../../nptl/libpthread.a ../../libc.a -lpthread

all:
    $(CXX) $(CXXFILES) $(LIBS) $(CXXFLAGS)

ただし、静的* .aファイルを使用する代わりに、動的共有オブジェクト*.soファイルを使用したいと思います。makefile内の*.aファイルを*.soファイルに置き換えるだけで十分ですか。そうでない場合、そうする正しい方法は何ですか。makefile内の*.aを*.soファイルに単純に置き換えようとしましたが、そうすると、プログラムは(変更したものではなく)元のglibcを使用しているように見えます。

4

1 に答える 1

7

標準ライブラリを使用したくない場合は、-nostdlibフラグが必要になる場合があります。さらに、ライブラリを動的にリンクする場合は、リンカーにライブラリの場所を伝える必要があります。 -L/dir/containing -lc.

実行時にa を設定したくない場合は、 ,を設定LD_LIBRARY_PATHする必要があります。rpath-Wl,--rpath=/path/containing

于 2012-05-21T16:39:38.870 に答える