共有オブジェクトライブラリを構築しようとしていますが、共有オブジェクトライブラリを作成するとオブジェクトファイルが見つからないというメッセージが表示されます。
OSError: lib1.o: cannot open shared object file: No such file or directory
次に、コマンドを実行して依存ldd
関係が何であるかを確認します。
linux-vdso.so.1 => (0x00007fff47dff000)
lib1.o => not found
lib2.o => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f61023db000)
/lib64/ld-linux-x86-64.so.2 (0x00007f610297c000)
次のコマンドを使用してgccをコンパイルしています。
gcc -I ../../path1/include -I ../../path2/include --shared -fPIC file1.c -o lib1.o
gcc -I ../../path1/include -I ../../path3/include --shared -fPIC file2.c -o lib2.o
gcc lib1.o lib2.o -shared -o lib2.so
lib1.oとlib2.oのパスで環境変数を設定するためのクイックソリューションを見つけましたが、LD_LIBRARY_PATH
ログインするたびにこれを実行する必要があります。私は効果的な解決策が欲しい。ターゲットファイルが見つからないのはなぜですか?パスを指定する必要がないように、共有オブジェクトファイルにオブジェクトファイルを含める方法はありますか?