私はgccの
を使用してUbuntuで共有ライブラリを作成しようとしている(main.cppに)
これは私のmakefileであり、私はまだプログラムをコンパイルすることができません。GCC共有ライブラリの問題
all:
#compile object(fPIC: creates position independent code)
gcc -fPIC -Wall -g -c shared.cpp
#compile shared library
gcc -shared -Wl,-soname,libshared.so.1 -o libshared.so.1.0.1 shared.o -lc
#link shared library
gcc -g -o main main.cpp -L. -lshared
- 私は、最初の行は、私は "-lc" は何をするかわからないよ
- 正しいか確信しています。私はそれがリンカに何かを渡すと思いますか?
私はライブラリをインストールしたくないので、現在のディレクトリからリンクできるようにしたいだけです。私は試しました:
export LD_LIBRARY_PATH=.
しかし、それは違いがないようです。すべてが現在のディレクトリにあります。ERROR: /usr/bin/ld: cannot find -lshared
は、どのように私は、コンパイラは私のライブラリの現在のディレクトリをチェックするのですか?
ありがとうございます。それを見つけると私は未定義の参照の束を得る。だから、私はこれがlibshared.soでlibshared.so.1ではないと仮定していると思います。エラー: /tmp/ccZrfhqj.o:関数 '__static_initialization_and_destruction_0(int、int) ': –
@Xploit:正しいなぜあなたはそれを受け入れないのですか?あなたは受け入れられた0の答えを持っています(あなたの質問が正しく答えられなかったからではありません)。 –
@ Serge Dundich、新しいサイトへの感謝 - ありがとう。 この問題を抱えている人は、g ++とgccを使用していないことを確認してください –