gpt4 book ai didi

c - 找不到指向 Makefile 中的库文件

转载 作者:太空狗 更新时间:2023-10-29 16:52:50 29 4
gpt4 key购买 nike

我正在尝试编译这个工具。以下是其 Makefile 的开头:

CC      = gcc
CFLAGS = -Wall -O2 -D TRACES
DFLAGS = -g -Wall -o0
CPPFLAGS= $(INCLUDES:%=-I %)
LDFLAGS = $(LIBRARIES:%=-L %)
LDLIBS = $(USED_TOOLS:%=-l%)

MY_FILES =
INCLUDE_DIR = ~/include

TOOLBOX_INC = $(INCLUDE_DIR)/tools
TOOLBOX_LIB = $(TOOLBOX_INC)
USED_TOOLS = std_io stringutils
INCLUDES = $(TOOLBOX_INC)
LIBRARIES = $(TOOLBOX_LIB)

我还有 ~/include/tools,编译后包括 std_io.o、libstd_io.a、stringutils.o 和 libstringutils.a

我收到以下错误:

gcc -L ~/include/tools rank.o counterexample.o -lstd_io -lstringutils -o rank
ld: library not found for -lstd_io
collect2: ld returned 1 exit status
make: *** [rank] Error 1

我不确定是否没有正确包含内容,以及为什么找不到库文件。

编辑:原来我不小心在 -L 和 -I 选项之间留下了一个空格。另外,我想路径必须扩展。现在可以使用了,谢谢!

最佳答案

问题在于使用波浪号表示“主目录”。仅当波浪号是单词中的第一个非引号字符时,shell 才会进行波浪号扩展。 Makefile 从不进行波浪号扩展。因此,在

gcc -L~/include ...

shell 执行波浪符扩展,gcc 将在当前目录中查找名为“~/include”的目录。但是在

gcc -L ~/include ...

shell 确实 执行波浪线扩展并且 gcc 看到了

gcc -L /usr/username/include ...

相反,它按预期工作。正确的做法是永远不要对主目录使用波浪号扩展,而只是在 Makefile 中适本地使用 $HOME,例如

INCLUDE_DIR     = $$HOME/include

关于c - 找不到指向 Makefile 中的库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031785/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com