mnisten сбой make с ошибкой makefile: 2: рецепт для целевого 'mnisten' сбой make: *** [mnisten] Ошибка 1

Я пытаюсь скомпилировать mnisten, используя g ++ -Wall -O2 -libboost_filesystem -std = c ++ 0x -o mnisten src / main.cpp , он не работает с ошибкой

/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:277:19458: warning: null character(s) ignored
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:277:7: error: stray ‘\177’ in program
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:277:19465: warning: null character(s) ignored
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:277:7: error: stray ‘\1’ in program
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:277:19480: warning: null character(s) ignored
In file included from src/main.cpp:16:0:
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:1:2: error: ‘ELF’ does not name a type
 ELF          >    �o      @       ��         @ 8  @                
  ^
/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so:2:24: error: expected declaration before ‘}’ token
                     P}     P}!     P}!                             �
                        ^
makefile:2: recipe for target 'mnisten' failed
make: *** [mnisten] Error 1
-1
задан 12 December 2016 в 08:35

1 ответ

Проблема

Это говорит In file included from src/main.cpp:16:0, затем имеет ошибки, пытающиеся использовать .so файл библиотеки, как будто это - исходный файл C++. .so файлы являются определенно не исходными файлами C++, поэтому конечно, у Вас будут ошибки там.

Взгляд на строку 16 из src/main.cpp и видят то, что идет не так, как надо там. Вы, вероятно, делаете что-то как #include "/home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so".

#include должен использоваться только для включения исходных файлов C++ (обычно .h файлы). Это никогда не должно использоваться для .so файлы.

опция решения

g++ -L может использоваться для сообщения этого, где двоичные библиотеки расположены и -l, опция может использоваться, чтобы сказать этому пользоваться определенной библиотекой.

Примечание, которое -lname попытается использовать libname.so, таким образом, Вы не захотите lib часть имени, включенного, или Вы получите проблему что -libname попытки использовать libibname.so.

  1. Удаляют любой #include строки, которые включают .so файлы.
  2. Изменение g++ -Wall -O2 -libboost_filesystem -std=c++0x -o mnisten src/main.cpp к чему-то как:

    g++ -Wall -O2 -L/home/dell/boost_1_55_0/stage/lib -lboost_filesystem -std=c++0x -o mnisten src/main.cpp
    

    можно альтернативно просто поместить полный путь в .so файл как так:

    g++ -Wall -O2 -std=c++0x -o mnisten /home/dell/boost_1_55_0/stage/lib/libboost_filesystem.so src/main.cpp
    
1
ответ дан 28 September 2019 в 01:02

Другие вопросы по тегам:

Похожие вопросы: