これは基本的な質問ですが、どのライブラリをgccとリンクする必要がありますか? #include <signal.h>
を使用する共有ライブラリをコンパイルしようとしていますが、使用しようとするとシンボルが見つからないため実行できません。 gccのフラグ-l
でライブラリと具体的にリンクする必要があると仮定していますが、そのライブラリがどこにあるかわかりません。特定のライブラリをgccにリンクする
より広範な例では、とのリンク、-l
は#include <signal.h>
とリンクするために使用できますか?
EDIT:使用してコンパイル
soinfo_link_image(linker.cpp:1617): could not load library "mylib.so" needed by "/bin/test";
cause by soinfo_relocate(linker.cpp:975): cannot locate symbol "signal" referenced by "mylib.so"...CANNOT LINK EXECUTABLE
:
gcc -fPIC -c -g -o mylib.o mylib.c
gcc -shared -o mylib.so mylib.o -ldl
ライブラリを実行しますか? –
ライブラリ名にはヘッダーの名前と系統的な関係がないため、すべての場合に有効な手順はありません。 'pkg-config'のようないくつかの場合に役立つツールがありますが、それらをサポートするためにはライブラリをコード化する必要があります。特定の 'signal.h 'の場合、特別な' -l'スイッチはまったく必要ないはずです。あなたの問題は何か他のものによって引き起こされるか、Cライブラリが壊れています。実際に何が起こっているのかを理解するために、質問に記載されているエラーメッセージの完全で未編集のテキストをコピーして貼り付けてください。 – zwol
いくつかのエラーがありますか?これらのエラーメッセージの内容は、おそらく少なくとも* *質問と多少関連していませんか? –