2013-07-22 18 views
2

Эй, ребята, я получаю странную ошибку компиляции g ++ при попытке запустить этот файл C++, Вот точные шаги воспроизведения.Неопределенная ссылка на символ 'BIO_ctrl @@ libcrypto.so.10'

# install taglib-devel 
$ sudo yum -y install taglib-devel 

$ cd /tmp && git clone https://gist.github.com/1468279.git; cd 1461468279/ 
$ gcc -g base64.c -lssl -c; 

# install cmake 
$ sudo yum install cmake 
$ cd /tmp 

# install taglib again =/ 
$ git clone [email protected]:taglib/taglib.git && cd taglib 
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_RELEASE_TYPE=Release .; make; sudo make install 

$ cd /tmp/1461468279 && g++ -g -I. -I/usr/local/include/taglib -L/usr/local/lib -ltag -lssl setcover.cpp -o setcover base64.o 


# response 
/usr/bin/ld: base64.o: undefined reference to symbol '[email protected]@libcrypto.so.10' 
/usr/bin/ld: note: '[email protected]@libcrypto.so.10' is defined in DSO /lib64/libcrypto.so.10 so try adding it to the linker command line 
/lib64/libcrypto.so.10: could not read symbols: Invalid operation 
collect2: error: ld returned 1 exit status 
+0

Похоже, что это может быть не по теме, потому что речь идет о программировании и может получить лучшие ответы на нашем сайте-сестре, [SO]. Там нет необходимости перекладывать свой вопрос там; Я уже проголосовал за то, чтобы это переместилось, и если сообщество подумает, что вам поможет лучше, он будет перенесен для вас. –

+1

Ваши файлы заголовков OpenSSL не соответствуют вашим библиотекам OpenSSL. Вы указываете '-L/usr/local/lib', и если вы находите OpenSSL там, вам нужно указать соответствующие файлы include в'/usr/local' (с соответствующим параметром '-I') в качестве Что ж. –

+0

@DarthAndroid Спасибо. – ehime

ответ

0

г ++ ... -L/USR/местные/Библиотека -ltag -lssl setcover.cpp -o setcover

Вышеуказанная команда неверна. Чтобы понять, почему это неверно, и как его исправить, прочитайте this.

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