저는 Linux 및 Mac OS X에서 컴파일해야하는 라이브러리에서 작업하고 있습니다. 지금까지는 "-g"로 컴파일하는 것이 두 운영 체제 모두에서 잘 작동했습니다.Mac에서만 -O2를 사용하여 컴파일 할 때 정의되지 않은 기호
좀 최적화 ("-O2")로 컴파일 시도하고 잘 리눅스에서 작동하지만 내가
사람을합니까 맥 OS X의에서 내 라이브러리와 프로그램을 연결하려고 할 때 정의되지 않은 심볼을 얻을 내가 찾아야 할 단서가 있습니까?
/usr/bin/gcc -std=c99 CMakeFiles/prod-cons.dir/prod-cons.c.o -o prod-cons -rdynamic -L/home/claferri/dev/build/src ../src/libckaapi.a -lpthread -Wl,-rpath,/home/claferri/dev/build/src
: 여기
154:00000018 C _the_symbol
377: U _the_symbol
이 라이브러리를 사용하여 프로그램에 대한 리눅스에서 컴파일 라인 :
nm mylib.a | grep _the_symbol
이 리눅스 및 Mac 용 같은 일 (어떤 리눅스에서 밑줄 선도)를 반환
및 Mac :
/usr/bin/gcc -std=c99 -Wl,-search_paths_first -headerpad_max_install_names -fPIC CMakeFiles/prod-cons.dir/prod-cons.c.o -o prod-cons -L/Volumes/Data/claferri/Work/build/src ../src/libckaapi.a /usr/lib/libpthread.dylib
링커 오류를 나타내는 Mac 버전의 nm은 라이브러리에 심볼이 있음을 보여 줍니까? –
예! 나는 무슨 일이 일어나고 있는지 알 수 없다. – claf
"_the_symbol"이 (가) 소스 코드에 나타나며 초기화되지 않은 전역 변수입니까? 당신의 소스 코드에서 참조 되는가? –