永久添加 g++ 的包含路径和共享库

Add include paths and shared library for g++ permanently

本文关键字:路径 共享 包含 添加 g++      更新时间:2023-10-16

我尝试在终端中使用 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 页面。简而言之,每个选项都为您提供了描述如何构建软件的方法,然后使用简单的命令(sconscmakemake,取决于您选择的系统)实际构建它。

所以,总而言之,我没有回答你的问题。我只能建议你研究一下这些。