Я пытаюсь скомпилировать 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
Это говорит 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
.
#include
строки, которые включают .so
файлы. Изменение 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