프로젝트를 컴파일하려고합니다. 그것은 성공적으로 컴파일합니다. 내 make
명령이 상태 코드 0
과 함께 종료되고 오류가 표시되지 않습니다.ldd가 컴파일로 라이브러리를 찾지 못했습니다.
그러나 프로젝트가 작동하지 않으며 ldd -d <file>
을 실행하면 찾을 수없는 두 개의 라이브러리가 있음을 보여줍니다. 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
입니다
...
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
...
:
>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)
이 두 라이브러리
는 파일의 실제 위치로 심볼릭 링크를 설정됩니다 : ) 1. 두 라이브러리가 심볼릭 링크되어 있어도 찾을 수없는 이유는 무엇입니까? 2. 정의되지 않은 기호는gcc
명령에 포함 된
mathlib
패키지의 일부입니다.
-I/home/dev/sdks/hl2sdk-ob-valve/public/mathlib
포함되지 않은 이유는 무엇입니까?
c++
은 내가 선택한 언어가 아니며 위험 할 수도있는 Makefiles에 대해 충분히 알고 있지만 실제로는 아무 것도 고쳐야하지 않으므로이 정보가 충분하지 않은 경우 사과드립니다. 필요에 따라 더 많이 제공 할 수 있습니다.
부수적으로 SDK는 _really_가'/ dev'에 있습니까? –
@JoachimIsaksson 아니요! 나는 경로를 모호하게하고'/ dev'에 대해서도 생각조차하지 않았다. 이 질문은 누군가를 혼동하지 않도록'/ home/dev'를 사용하도록 업데이트했습니다. – Andy