我使用g ++构建一个库,然后在测试应用程序中使用该库。该库在Ubuntu和Centos上均无错误构建,并在Ubuntu上与应用程序链接;但是,在Centos上,g ++报告我库中每个函数的错误消息。版本是:
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
我知道库顺序很重要,因此我将库放置在测试应用程序源文件之后,但在所需的系统库之前:
g++ -o ./mylib_test src/mylib_test.o lib/mylib.a -lstdc++ -lcryptopp -llog4cxx -lapr-1 -laprutil-1 -lcurl -lm -lz
这是一个不链接的函数示例:
mylib_test.o: In function `main':
mylib_test.cpp:(.text+0x3118): undefined reference to `ReturnCodeToString(ReturnCode)'
同样,它将在Ubuntu上编译并运行而没有错误。