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

时间:2013-09-15 04:08:17

标签: c++ include g++ shared-libraries

我尝试在终端中使用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。

有人可以帮帮我吗?非常感谢你提前。

3 个答案:

答案 0 :(得分:2)

最好,最灵活的方法是通过构建系统,使用Make或CMake或类似的东西。但是有一个严肃的学习曲线。现在可以更简单地创建一个脚本文件来运行您从命令行成功使用的相同命令。

我假设您正在使用bash shell。你可以只编辑一个文件 - 称之为“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

答案 1 :(得分:2)

您需要进一步调查三件事:

  • 影响编译器的环境变量。由于您使用的是GCC,我可以指出this page。特别是,你应该阅读:
  

LIBRARY_PATH

     

LIBRARY_PATH的值是以冒号分隔的列表   目录,很像PATH。配置为本机编译器时,GCC   在搜索特殊链接器时尝试这样指定的目录   文件,如果使用GCC_EXEC_PREFIX找不到它们。使用GCC进行链接   在搜索普通库时也使用这些目录   -l选项(但首先使用-L指定的目录)。

  • 您的操作系统搜索共享动态库的方式。由于您使用的是Linux,我建议this page(讨论ldconfig)。

而且,最重要的是:

  • 什么是软件构建工具 Makefile 。为此,您可以参考Scons页面,CMake页面或GNU Make页面。简而言之,每个选项都为您提供了描述如何构建软件,然后使用简单命令(sconscmake或{实际构建它)的方法。 {1}},具体取决于您选择的系统。

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

答案 2 :(得分:2)

这是一个使用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命令。