温馨提示×

linux c++配置怎样设路径

小樊
41
2026-10-19 16:55:46
栏目: 编程语言

在 Linux 下用 C++ 配置“路径”,通常分几种常见场景。下面按最常见需求给你总结,基本够用。


一、编译时设置头文件 / 库路径

1️⃣ 头文件路径(.h)

g++ main.cpp -I/path/to/include

多个路径:

g++ main.cpp -I/path/to/include -I/another/include

2️⃣ 库文件路径(.so / .a)

g++ main.cpp -L/path/to/lib -lmylib

示例:

g++ main.cpp -L/usr/local/lib -lopencv_core

二、运行时设置动态库路径

编译通过后,运行时可能报:

error while loading shared libraries

方法 1:临时(推荐调试用)

export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
./a.out

方法 2:永久(用户级)

echo 'export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

方法 3:系统级(推荐正式环境)

sudo vi /etc/ld.so.conf.d/mylib.conf

写入:

/path/to/lib

然后执行:

sudo ldconfig

三、CMake 中配置路径(最常用)

头文件

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})

四、C++ 代码中读取路径(运行时)

获取可执行文件所在路径

#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

如果你指的是:

  • VSCode 的 C++ 配置
  • CLion 路径设置
  • 某个库(OpenCV / Boost / CUDA)
  • 交叉编译路径

告诉我具体场景,我可以直接给你对应配置示例。

0 踩