プロジェクトをコンパイルしようとしています。それは正常にコンパイルされます。私のmake
コマンドは、ステータスコード0
で終了し、エラーは表示されません。lddはコンパイルによってライブラリが見つかりませんでした。
しかし、プロジェクトは機能していません。ldd -d <file>
を実行すると、見つからないライブラリが2つあることがわかります。
>ldd -d output_file.so
linux-gate.so.1 => (0xf77e0000)
libvstdlib_srv.so => not found
libtier0_srv.so => not found
libm.so.6 => /lib/libm.so.6 (0xf7760000)
libdl.so.2 => /lib/libdl.so.2 (0xf775b000)
libc.so.6 => /lib/libc.so.6 (0xf75a9000)
/lib/ld-linux.so.2 (0x46e4a000)
undefined symbol: pfVectorNormalize (output_file.so)
undefined symbol: _Z12VectorAnglesRK6VectorR6QAngle (output_file.so)
undefined symbol: pfSqrt (output_file.so)
undefined symbol: __cxa_guard_acquire (output_file.so)
undefined symbol: __cxa_guard_release (output_file.so)
undefined symbol: _Z6ConMsgPKcz (output_file.so)
undefined symbol: Warning (output_file.so)
undefined symbol: __dynamic_cast (output_file.so)
undefined symbol: _Z11ConColorMsgRK5ColorPKcz (output_file.so)
undefined symbol: Error (output_file.so)
undefined symbol: AssertValidStringPtr (output_file.so)
undefined symbol: _AssertValidWritePtr (output_file.so)
undefined symbol: _AssertValidReadPtr (output_file.so)
undefined symbol: _ZTVN10__cxxabiv121__vmi_class_type_infoE (output_file.so)
undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE (output_file.so)
undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE (output_file.so)
undefined symbol: __gxx_personality_v0 (output_file.so)
これら2つのライブラリーは、ファイルの実際の場所へのシンボリックリンクを設定されています
...
lrwxrwxrwx 1 Andy Andy 62 May 2 12:30 libtier0_srv.so -> /home/dev/sdks/hl2sdk-ob-valve/lib/linux/libtier0_srv.so
lrwxrwxrwx 1 Andy Andy 64 May 2 12:30 libvstdlib_srv.so -> /home/dev/sdks/hl2sdk-ob-valve/lib/linux/libvstdlib_srv.so
-rw-r--r-- 1 Andy Andy 5444 May 2 11:53 Makefile
...
gcc
コマンドが実行さ
gcc -I/home/dev/sdks/hl2sdk-ob-valve/public/game/server -I. -I.. -ICEntity -Isdk -I/home/dev/project1/hl2sdk-ob-valve/public -I/home/dev/sdks/hl2sdk-ob-valve/public/engine -I/home/dev/sdks/hl2sdk-ob-valve/public/tier0 -I/home/dev/sdks/hl2sdk-ob-valve/public/tier1 -I/home/dev/sdks/hl2sdk-ob-valve/public/mathlib -I/home/dev/project1/mmsource-central/core -I/home/dev/project1/mmsource-central/core/sourcehook -I/home/dev/project1/sourcemod-central/public -I/home/dev/project1/sourcemod-central/public/sourcepawn -I/home/dev/project1/sourcemod-central/core project1_output/sdk/smsdk_ext.o project1_output/extension.o project1_output/CTrackingProjectile.o project1_output/CSentryRocket.o project1_output/CProjectileRocket.o project1_output/CProjectileArrow.o project1_output/CProjectileFlare.o project1_output/CProjectilePipe.o project1_output/CProjectileSyringe.o project1_output/CEntity/CEntity.o project1_output/CEntity/CEntityManager.o project1_output/CEntity/CPlayer.o /home/dev/project1/hl2sdk-ob-valve/lib/linux/tier1_i486.a libvstdlib_srv.so libtier0_srv.so -m32 -lm -ldl -static-libgcc -shared -o project1_output/output_file.so
私の質問がありますされています。 )1.なぜ2つのライブラリがシンボリックリンクされていても見つからないのですか? 2.)未定義シンボルはgcc
コマンドに含まれているmathlib
パッケージの一部です。 -I/home/dev/sdks/hl2sdk-ob-valve/public/mathlib
これらは含まれているにもかかわらず、なぜ未定義ですか?
c++
は私の言いたい言語ではありません。私はMakefilesについては危険であるとは十分に知っていますが、実際には何も修正していないので、十分な情報がないと謝ります。私は必要に応じてより多くを提供することができます。
「/ dev」にSDK _really_が置かれていますか? –
@JoachimIsakssonいいえ!私はパスを隠していて、 '/ dev'についても考えなかった。私は '/ home/dev'を使うように質問を更新しましたので、誰もそれを混乱させません。 – Andy