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
请帮助
你建立'liblua'的方式可能有问题。你可以尝试使用由Ubuntu提供的版本,看看你是否仍然有问题? – jxh
我不认为我可以这样做,因为它需要的共享库是针对这个特定的版本构建的,是否有我可以用来调试这种类型的问题的工具? – josephmisiti
你可以编写一个只使用Lua的简单程序。根据您的版本进行编译,然后根据系统版本进行编译,并查看行为是否存在差异。以后担心你的共享库,一次调试一个问题。 – jxh