2013-06-11 3 views
1

liblua51.so에 의존하는 공유 라이브러리 (so)에 의존하는 간단한 예제 프로그램을 컴파일하려고합니다. 내 소스 파일 example.c이며, 여기에 내가 (이 C로 작성) 나는 다음과 같은 오류가 점점 오전lua51 c-shared 라이브러리 문제

cc -Wall -fPIC -ldl -o a.out -I./ste-linux/ste-interface-files/c/ -L./ste-linux/ste-shared-libraries/ example.c -lm -llua51 -lste -lm -ldl 

컴파일하기 위해 사용하고있는 명령입니다 : 나는을 읽고

./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `sinh' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `ceil' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `atan2' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `tanh' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `cosh' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `fmod' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `acos' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `sin' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `atan' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `asin' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `exp' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `tan' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `cos' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `log' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `pow' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `log10' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `sqrt' 
./ste-linux/ste-shared-libraries//liblua51.so: undefined reference to `floor' 

은 stackoverflow에 다른 스레드가 - lm 플래그를 추가하는 것은이 문제를 해결할 것이지만, 명령에 -L 및 -lm -ldld를 어디에 두어도이 정의되지 않은 참조는 사라지지 않을 것입니다.

내가 우분투에 lib 디렉토리를 컴파일하려고 12.04 LTS

도와주세요

+0

'liblua'를 만든 방식에 문제가있는 것 같습니다. 대신 Ubuntu에서 제공하는 버전을 사용해 보시고 문제가 계속 발생하는지 확인해주십시오. – jxh

+0

공유 라이브러리가 필요하기 때문에이 특정 버전에 대해 빌드 된 것이므로이 유형의 문제를 디버깅하는 데 사용할 수있는 도구가 있기 때문에 제가 할 수 있다고 생각하지 않습니까? – josephmisiti

+0

루아만을 사용하는 간단한 프로그램을 작성할 수 있습니다. 버전과 비교하여 컴파일 한 다음 시스템 버전과 비교하여 컴파일하고 동작에 차이가 있는지 확인하십시오. 나중에 공유 라이브러리에 대해 걱정할 필요가 있습니다. 한 번에 한 가지 문제 만 디버깅하십시오. – jxh

답변

1

문제는 내가 사용하던 공유 라이브러리는 GCC의 다른 버전으로 구축 하였다. Ubuntu 11.04 (12.04 LTS에서)에서 다운 그레이드 한 후 해결되었습니다.