1

我有两个用 C++ 编写的项目。假设项目被命名为 first 和 second,第一个是基础项目,第二个项目有第一个项目的插件,所以当我构建和安装第二个项目时,它只是添加了第一个项目的功能。

我创建了两个单独的 Makefile 项目“第一个”和“第二个”,我可以分别构建它们。

我的问题是我无法将“第一个”中生成的二进制文件链接为“第二个”的基本二进制文件。我尝试在 stackoverflow 上搜索类似的问题,但我不知道如何将“第一”中生成的二进制文件链接到“第二”,任何帮助将不胜感激。

让我知道是否需要重新提出我的问题。

4

1 回答 1

1

如果您使用的是 GCC,并阅读链接器选项的参考,您会注意到与外部库链接的选项:

  • -L<directory>

    此选项告诉链接器添加<directory>到库搜索路径。换句话说,它告诉链接器在哪里可以找到库文件。

  • -l<name-of-lib>

    此选项告诉链接器与库链接。POSIX 环境(Linux、OSX、使用 Cygwin 或 MinGW 的 Windows)中的库被命名为libname-of-lib.a,但-l您不需要使用lib前缀或.a扩展名。另请注意,在 option-l中,即小写字母 L(不是大写 i 或数字 1)。

总结:要与另一个目录中的库链接,您可以这样链接:

$ gcc <other flags> <object files> -o <executable> -L<directory> -l<library>

在您的情况下,您应该为-L选项指定库所在的目录project1,并为-l选项传递库的基本名称。


另一方面,如果你不project1变成一个库,并且想直接链接它的目标文件,那也很好:

$ gcc <flags> <object files of project1> <object files of project2> -o <executable>

目标文件当然可以是完整路径或相对路径。例如,如果您具有以下目录结构:

/
`--家
    `-- 用户
        `-- 我的项目
            |-- 项目1
            `--项目2

然后,如果您在目录中,则可以project2从以下位置访问目标文件project1

../project1/objectfile.o

当然,所有这些都可以放在 Makefile 中。

于 2012-10-12T20:53:54.227 回答