永久添加 g++ 的包含路径和共享库
Add include paths and shared library for g++ permanently
我尝试在终端中使用 g++ 编译.cpp文件:
g++ -o main main.cpp
-I/usr/include/glib-2.0
-I/usr/include/json-glib-1.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include/
-L/usr/lib/x86_64-linux-gnu -ljson-glib-1.0 -lglib-2.0
它有效。
但是我想添加这些 .so 库并永久包含 g++ 的文件,这样我就不需要每次都键入这些文件。我还想让它适用于其他应用程序。
我正在使用 ubuntu。
谁能帮我?提前非常感谢你。
下面是一个使用 pkg-config 的 Makefile 的非常基本的例子,无论如何你都应该与 glib 一起使用,它消除了很多痛苦:
CXXFLAGS += $(shell pkg-config --cflags glib-2.0) $(shell pkg-config --cflags json-glib-1.0)
LIBS += $(shell pkg-config --libs glib-2.0) $(shell pkg-config --libs json-glib-1.0)
all: main
main: main.o
$(CXX) $(CXXFLAGS) main.o -o main $(LIBS)
clean:
rm -f main main.o
为自己找一个 gnu make 教程可能是明智的,这样你就可以更好地理解这个例子。
现在,您可以只执行"make",而不是运行手动键入的 shell 命令。
最好、最灵活的方法是通过构建系统,使用 Make 或 CMake 或类似的东西。 但是有一个严重的学习曲线。 现在,只需创建一个脚本文件来运行从命令行成功使用的相同命令可能会更简单。
我假设您正在使用 bash 外壳。 你可以编辑一个文件 - 称之为"compile.bash"。 在文件的第一行,键入"#!/bin/bash"。 这告诉系统将此文件解释为 bash 脚本文件。 然后在后续的一行或多行中,键入您刚刚在问题中提供的命令,与您之前使用的命令完全相同。 保存文件。 然后从命令行运行以下命令:"chmod +x compile.bash"(不带引号)。 确保新文件位于从中编译的目录中,您只需键入:"compile.bash"而不是你之前使用的长命令行。
示例文件 "compile.bash"
#!/bin/bash
g++ -o main main.cpp -I/usr/include/glib-2.0 -I/usr/include/json-glib-1.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -L/usr/lib/x86_64-linux-gnu -ljson-glib-1.0 -lglib-2.0
您需要进一步调查三件不同的事情:
- 影响编译器的环境变量。由于您使用的是GCC,我可以指出此页面。特别是,您应该阅读以下内容:
LIBRARY_PATH
LIBRARY_PATH
的值是以冒号分隔的列表 目录,很像PATH
.当配置为本机编译器时,GCC 尝试搜索特殊链接器时指定的目录 文件,如果无法使用GCC_EXEC_PREFIX
.使用 GCC 链接 在搜索普通库时也使用这些目录 -l 选项(但用 -L 指定的目录排在第一位)。
-
操作系统搜索共享动态库的方式。由于您使用的是Linux,因此我推荐此页面(讨论
ldconfig
)。
而且,最重要的是:
-
什么是软件构建工具或制作文件。为此,您可以参考 Scons 页面、CMake 页面或 GNU Make 页面。简而言之,每个选项都为您提供了描述如何构建软件的方法,然后使用简单的命令(
scons
、cmake
或make
,取决于您选择的系统)实际构建它。
所以,总而言之,我没有回答你的问题。我只能建议你研究一下这些。
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 在 Linux 上,在 C++ 程序中,如何找到已加载共享库的路径?
- 如何更改路径以修复错误"./main:加载共享库 libmkl_core.so 时出错?
- 如何更改在 c++ 中使用提升库创建的共享内存的路径
- 运行可执行文件时找不到共享库,即使共享库存在于指定的路径中
- 如何将共享库与具有相对路径的 CMake 链接
- 在 Windows 中加载共享库时在特定路径中选取 dll
- 即使定义了搜索路径,也找不到自定义共享库
- 共享库依赖于具有硬编码路径的其他库
- 在C 中的Linux上指定共享库的路径
- 从共享路径 URL 获取 IPAddress
- Android本机共享库安装路径
- Windows 上的 Cmake 不添加共享库路径(适用于 linux)
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- 永久添加 g++ 的包含路径和共享库
- 共享库,makefile.库路径
- Visual Studio: c++项目包含路径在存储库上共享
- 在不使用完整路径的情况下创建共享库链接
- 如何在自己构建GCC后配置共享库搜索路径
- 是否可以在运行时将可执行文件链接到具有相对路径的共享库