Я использую 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.