在 Linux 中编译 C++ 程序时 Link PCL 个库
Link PCL libraries while compiling C++ programs in Linux
我是点云库的新手。有件事一直困扰着我。
因此,在我的系统上,每当我必须编译一个需要 OpenCV 库 linked 的 C++ 程序时,我都会使用以下终端命令:
g++ -std=c++11 fileName.cpp -o executableFile `pkg-config --cflags --libs opencv`
现在,事情已经到了不得不用PCL的地步了。但是,到处(包括 PCL 的官方网站)人们 link PCL 库使用 CMake 文件,而我对 CMake 不熟悉。
有没有办法在不编写 CMake 文件的情况下包含 PCL 库,只在终端命令中包含更多 flags/parameters?
我正在使用 Ubuntu 18.04.
我试验了一段时间,结果如下。
man pkg-config
告诉您 pkg-config 查找 .pc 文件的文件夹。因此,我检查了这些文件夹中我希望 pkg-config 与我的 .cpp 文件 link 的确切 .pc 文件名。我在 \usr\local\lib\pkgconfig
找到了所需的文件 (pcl_io-1.11.pc)
接下来,我将终端命令修改为以下内容(请将下面的两个反引号视为一个反引号)
g++ -std=c++14 pcd_write.cpp -o pcd_write ``pkg-config --cflags --libs pcl_io-1.11`` -lboost_system
注意:不包括 -lboost_system
会导致另一条错误消息。我发现 很有帮助。
编译成功。但是,在 运行 可执行文件上,我会收到此错误消息:
./pcd_write:error while loading shared libraries:libpcl_io.so.1.11:cannot open shared object file:No such file or directory
已找到此问题的解决方案here
sudo /sbin/ldconfig -v
然后,运行 可执行文件给出了预期的结果。
我是点云库的新手。有件事一直困扰着我。
因此,在我的系统上,每当我必须编译一个需要 OpenCV 库 linked 的 C++ 程序时,我都会使用以下终端命令:
g++ -std=c++11 fileName.cpp -o executableFile `pkg-config --cflags --libs opencv`
现在,事情已经到了不得不用PCL的地步了。但是,到处(包括 PCL 的官方网站)人们 link PCL 库使用 CMake 文件,而我对 CMake 不熟悉。
有没有办法在不编写 CMake 文件的情况下包含 PCL 库,只在终端命令中包含更多 flags/parameters?
我正在使用 Ubuntu 18.04.
我试验了一段时间,结果如下。
man pkg-config
告诉您 pkg-config 查找 .pc 文件的文件夹。因此,我检查了这些文件夹中我希望 pkg-config 与我的 .cpp 文件 link 的确切 .pc 文件名。我在 \usr\local\lib\pkgconfig
接下来,我将终端命令修改为以下内容(请将下面的两个反引号视为一个反引号)
g++ -std=c++14 pcd_write.cpp -o pcd_write ``pkg-config --cflags --libs pcl_io-1.11`` -lboost_system
注意:不包括 -lboost_system
会导致另一条错误消息。我发现
编译成功。但是,在 运行 可执行文件上,我会收到此错误消息:
./pcd_write:error while loading shared libraries:libpcl_io.so.1.11:cannot open shared object file:No such file or directory
已找到此问题的解决方案here
sudo /sbin/ldconfig -v
然后,运行 可执行文件给出了预期的结果。