在 Linux 下用 C++ 配置“路径”,通常分几种常见场景。下面按最常见需求给你总结,基本够用。
.h)g++ main.cpp -I/path/to/include
多个路径:
g++ main.cpp -I/path/to/include -I/another/include
.so / .a)g++ main.cpp -L/path/to/lib -lmylib
示例:
g++ main.cpp -L/usr/local/lib -lopencv_core
编译通过后,运行时可能报:
error while loading shared libraries
export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
./a.out
echo 'export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
sudo vi /etc/ld.so.conf.d/mylib.conf
写入:
/path/to/lib
然后执行:
sudo ldconfig
include_directories(/path/to/include)
link_directories(/path/to/lib)
target_link_libraries(myapp mylib)
✅ 更推荐写法:
find_library(MYLIB mylib PATHS /path/to/lib)
target_link_libraries(myapp ${MYLIB})
#include <unistd.h>
#include <string>
std::string getExePath() {
char buf[1024];
readlink("/proc/self/exe", buf, sizeof(buf));
std::string path(buf);
return path.substr(0, path.find_last_of('/'));
}
-I 是编译期LD_LIBRARY_PATH 是运行期/etc/ld.so.conf 一定要 ldconfig.a,动态库用 .so如果你指的是:
告诉我具体场景,我可以直接给你对应配置示例。