2013-12-13 6 views
2

Я пытаюсь следующую команду:компоновщика GCC Неопределенная ссылка на символ

gcc -o test test.o -lblas 

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

/usr/bin/ld: test.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5' 
/usr/bin/ld: note: '[email protected]@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: ошибка: л.д. возвращается статус 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 
+7

При создании программ на C++ используйте 'g ++', а не 'gcc'. –

+1

Добавление «-lstdC++» в командную строку может помочь. –

+1

@Joker_vD: комментарий Йоахима применяется, даже если он связан. Вручную добавление libstdC++ - неправильный путь. – Mat

ответ

1

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

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

  1. установки Libtool;

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

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

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

Смежные вопросы