私はコンパイルする必要があります。最も重要なのは、function
という共有ライブラリファイルに存在するC
プログラムをリンクする必要があります。以前の開発チームとのコミュニケーションが不足しているため、適切な文書がありません。Linux上でgccと共有ライブラリをリンクする
gcc -L/customlibs testing.c -o testing -lcustom
:その関数名は
/customlibs/libcustom.so
からgreppedすることができますので
int CustomFunction(unsigned char *in, int size);
、私はコードをコンパイルし、このようにそれをリンクしてみました:私は(私は引数の数と種類を知っているので)関数のプロトタイプを宣言しましたこのように見ていくつかのエラーメッセージがスロー
:明らか
/customlibs/libcustom.so: undefined reference to `AnotherCustomFunction'
は、私はwoのものを作るために、同様に他のライブラリが含まれるようにリンカを伝える、とする必要がありますrse、彼らは特定の順序である必要があります。私はLD_LIBRARY_PATH
を-Wl,-rpath=
,-Wl,--no-undefined
および-Wl,--start-group
を使ってエクスポートしようとしました。リンカーにすべての.so
ファイルを適切な順序なしで与える簡単な方法はありますか?
私はそれを試しましたが、それはより多くの未定義の参照について文句を言います – Ulrik
Ulrik、どちらが参考になりますか?さらにライブラリを追加する必要があります。また、すべての共有ライブラリで 'ldd'コマンドを実行して、依存するライブラリを抽出し、[topological sort](https://en.wikipedia.org/wiki/Topological_sorting)またはリンクコマンド([ - ( 'と' - ) 'オプションの組の間に[(http://stackoverflow.com/a/5651895/196561))にそれらをすべて追加しようとします。 – osgx
'-Wl、 - start-group -lcustom1 -lcutom2 ... -Wl、-end-group'ですべての共有ライブラリを追加すると' /customlibs/libcustom.so:undefined reference 'AnotherCustomFunction'に – Ulrik