2013-06-11 56 views
1

我想编译一个简单的示例程序,它依赖于依赖于liblua51.so的共享库(so)。我的源文件example.c,这里是我使用的编译它(它是写在C)lua51 c共享库的问题

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 -ldl放在命令中,这些未定义的引用都不会消失。

我试图编译在Ubuntu这个LIB 12.04 LTS

请帮助

+0

你建立'liblua'的方式可能有问题。你可以尝试使用由Ubuntu提供的版本,看看你是否仍然有问题? – jxh

+0

我不认为我可以这样做,因为它需要的共享库是针对这个特定的版本构建的,是否有我可以用来调试这种类型的问题的工具? – josephmisiti

+0

你可以编写一个只使用Lua的简单程序。根据您的版本进行编译,然后根据系统版本进行编译,并查看行为是否存在差异。以后担心你的共享库,一次调试一个问题。 – jxh

回答

1

这个问题是我用的是共享库与不同版本的GCC的构建。在从Ubuntu 11.04(从12.04 LTS)降级之后,它已经解决了。