在 Linux 下使用 C/C++ 时,“路径”通常指 头文件路径、库文件路径、可执行文件路径 等。不同场景设置方式不同,下面按最常见的几种情况给你一个速查总结。
-I /path/to/include
示例:
g++ main.cpp -I /usr/local/include/mylib
编译器会在
/path/to/include中查找#include "xxx.h"
-L /path/to/lib
示例:
g++ main.cpp -L /usr/local/lib
-lxxx
示例:
g++ main.cpp -L /usr/local/lib -lmylib
对应:
libmylib.so
libmylib.a
程序运行时动态库找不到,常见报错:
error while loading shared libraries: libxxx.so
export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
# ~/.bashrc 或 ~/.zshrc
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
然后:
source ~/.bashrc
sudo vim /etc/ld.so.conf.d/mylib.conf
写入:
/usr/local/lib
然后执行:
sudo ldconfig
sudo cp a.out /usr/local/bin/
export PATH=/your/path:$PATH
include_directories(/path/to/include)
link_directories(/path/to/lib)
target_link_libraries(app mylib)
CXX = g++
CXXFLAGS = -I /usr/local/include
LDFLAGS = -L /usr/local/lib -lmylib
app: main.cpp
$(CXX) main.cpp -o app $(CXXFLAGS) $(LDFLAGS)
| 类型 | 路径 |
|---|---|
| 系统头文件 | /usr/include |
| 第三方头文件 | /usr/local/include |
| 系统库 | /usr/lib |
| 第三方库 | /usr/local/lib |
| 可执行程序 | /usr/local/bin |
# 查看程序依赖的库
ldd ./app
# 查看库搜索路径
gcc -print-search-dirs
# 查看 include 路径
echo | g++ -v -x c++ -E -
如果你能具体说一下是 编译报错、运行报错,还是 CMake / Makefile 配置,我可以给你更精确的示例。