Линкер GCC Неопределенная ссылка на символ

Я пытаюсь следующую команду:

gcc -o test test.o -lblas

который дает ошибку:

/usr/bin/ld: test.o: undefined reference to symbol 'sqrtf@@GLIBC_2.2.5'
/usr/bin/ld: note: 'sqrtf@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding     it to the linker command line

/lib64/libm.so.6: не удалось прочитать символы: недопустимая операция
collect2: error: ld вернул 1 состояние выхода

Однако, когда я добавляю -lm в конце команды, появляется куча сообщений об ошибках:

test.o: In function `main':
test.cpp:(.text+0xe9): undefined reference to `std::cout'
test.cpp:(.text+0xee): undefined reference to `std::basic_ostream<char,
std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char,
std::char_traits<char> >&, char const*)'
[...]
collect2: error: ld returned 1 exit status

2

Решение

У меня та же проблема с вами, когда я пытался связать другие библиотеки.

Вот мои решения:

  1. установить libtool;

  2. добавить путь к библиотеке в LD_LIBRARY_PATH;

  3. Я использую root, чтобы сделать.

Я не знаю точную причину, почему это работает на моем Ubuntu. Но я думаю, что вы можете попробовать эти шаги.

2

Другие решения

Других решений пока нет …