c - 现有文件的 LD 错误

标签 c linux unix makefile xlc

大家好。问题是这样的。我正在使用 makefile 来制作应用程序。在其中我同时指定了 LDFLAGS 和 LDLIBS(以及其他,但那两个是相关的)并指向现有文件夹中正确的 *.a 文件。在尝试制作应用程序时,我从 LD 收到以下错误:

0706-006 Cannot find or open library file: -l test001 ld:open(): No such file or directory

我尝试链接的项目中的每个库都会出现这些情况。 makefile 中它出现的行:

    appname: appname.o
    $(CC) -bnoquiet appname.o -o $@ $(LDFLAGS) $(LDLIBS)

在哪里

    LDFLAGS=-L$(LIBDIR)/
    LDLIBS=-ltest001 -ltest002 -ltest003 -ltest004

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

作为临时解决方案,我决定将这些库文件作为目标文件传递给链接器。像这样:

    LIBS=$(LIBDIR)/test001.a $(LIBDIR)/test002.a $(LIBDIR)/test003.a $(LIBDIR)/test004.a
    ...
    $(CC) -bnoquiet appname.o -o $@ $(LIBS)

我认为这不是最好的方法。尽管在这种情况下似乎任何解决方案都会使记录的方式(使用 -L 和 -l 键)变得无用。真可惜。

关于c - 现有文件的 LD 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23732207/

相关文章:

linux - Rsync 使用 find 命令,删除原始文件,用符号链接(symbolic link)替换原始文件

c - 有什么方法可以解决段错误吗?

c - 按位置索引提取子串的库函数

c - 寄存器值从 0x20000000 到 0x20000FFC

linux - 在 Linux 中列出用户

linux - 排序管道会删除文件

c - printf 从 char 到 int 的转换太聪明了?

linux - shell Bash 脚本

Rubymine 无法识别已安装的 gem

Unix:控制台输出上的 Grep