我从他们的官方网站下载了最新版本的 gmp 和 ppl 并且安装良好。AFAIS,所有库文件都在/usr/local/lib
. 但是当我尝试通过包含ppl.hh
头文件来编译和运行 C++ 文件时,我得到了错误,
CMakeFiles/CLionProjects.dir/untitled/main.cpp.o:
In function `__static_initialization_and_destruction_0(int, int)':
/usr/local/include/ppl.hh:19804: undefined reference to `Parma_Polyhedra_Library::Init::Init()'
/usr/local/include/ppl.hh:19804: undefined reference to `Parma_Polyhedra_Library::Init::~Init()'
collect2: error: ld returned 1 exit status
的内容/usr/local/lib
,
soner@ubuntu:/usr/local/lib$ ls
libgmp.a libgmpxx.la libppl_c.la libppl.so.14
libgmp.la libgmpxx.so libppl_c.so libppl.so.14.0.0
libgmp.so libgmpxx.so.4 libppl_c.so.4 python2.7
libgmp.so.10 libgmpxx.so.4.5.2 libppl_c.so.4.0.0 python3.5
libgmp.so.10.3.2 libppl.a libppl.la
libgmpxx.a libppl_c.a libppl.so
简单的 C++ 文件是,
#include <iostream>
#include "ppl.hh"
int main() {
return 0;
}
即使我尝试使用 运行它set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 ")
,仍然出现相同的错误。资源
Mac OSX 终端上的 g++
Soners-MacBook-Pro:Documents soner$ g++ -c main.cpp
Soners-MacBook-Pro:Documents soner$ g++ -o test main.cpp
Undefined symbols for architecture x86_64:
"Parma_Polyhedra_Library::Init::Init()", referenced from:
___cxx_global_var_init.6 in main-d99d55.o
"Parma_Polyhedra_Library::Init::~Init()", referenced from:
___cxx_global_var_init.6 in main-d99d55.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation
Ubuntu 上的 g++
soner@ubuntu:~/Desktop$ cat main.cpp
#include <iostream>
#include "ppl.hh"
int main() {
return 0;
}
soner@ubuntu:~/Desktop$ g++ -c main.cpp
soner@ubuntu:~/Desktop$ g++ -o test main.cpp
/tmp/ccQTNpxj.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0xa9): undefined reference to `Parma_Polyhedra_Library::Init::Init()'
main.cpp:(.text+0xb8): undefined reference to `Parma_Polyhedra_Library::Init::~Init()'
collect2: error: ld returned 1 exit status