/usr/bin/ld: 找不到:没有这样的文件或目录

Posted

技术标签:

【中文标题】/usr/bin/ld: 找不到:没有这样的文件或目录【英文标题】:/usr/bin/ld: cannot find : No such file or directory 【发布时间】:2013-12-16 17:29:18 【问题描述】:

我正在关注this SDL 教程,尝试使用一些 SDL 扩展库。我的代码与theirs 相同,但我仍然无法make 导致我相信问题出在我的makefile 的文件中,如下所示:

CXX = g++
# Update these paths to match your installation
# You may also need to update the linker option rpath, which sets where to look for
# the SDL2 libraries at runtime to match your install
SDL_LIB = -L/usr/local/lib -lSDL2 -Wl,-rpath=/usr/local/lib, -lSDL2_image
SDL_INCLUDE = -I/usr/local/include
# You may need to change -std=c++11 to -std=c++0x if your compiler is a bit older
CXXFLAGS = -Wall -c -std=c++11 $(SDL_INCLUDE)
LDFLAGS = $(SDL_LIB)
EXE = SDL_Lesson3

all: $(EXE)

$(EXE): main.o
    $(CXX) $< $(LDFLAGS) -o $@

main.o: main.cpp
    $(CXX) $(CXXFLAGS) $< -o $@

clean:
    rm *.o && rm $(EXE)

makefile 在前面的示例中运行良好。在这个例子中唯一改变的是第 5 行,我按照教程添加了-lSDL2_image。当我尝试make 文件时,我得到以下回溯:

rony@comet:~/Documents/cpp/helloworld/lesson3$ make
g++ main.o -L/usr/local/lib -lSDL2 -Wl,-rpath=/usr/local/lib, -lSDL2_image -o SDL_Lesson3
/usr/bin/ld: cannot find : No such file or directory
collect2: error: ld returned 1 exit status
make: *** [SDL_Lesson3] Error 1

我的 makefile 有错误吗?我没有正确安装库吗?

【问题讨论】:

您在 -Wl 选项的末尾有一个虚假的逗号。 【参考方案1】:

问题是这个流氓逗号:

SDL_LIB = -L/usr/local/lib -lSDL2 -Wl,-rpath=/usr/local/lib, -lSDL2_image
                                                           ^

导致链接器在不存在且名称为空的目录以及/usr/local/lib 中查找库。删除逗号应该可以解决它。

【讨论】:

是的!固定的。我错误地认为我应该用逗号附加它。当我被允许时,将标记答案正确。谢谢。

以上是关于/usr/bin/ld: 找不到:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

/usr/bin/ld: 无法打开输出文件 bin/genericMatching: 没有这样的文件或目录

C 编程异常 — /usr/bin/ld: 找不到 -lm

编译错误 /usr/bin/ld: 无法打开输出文件 bin/server: 没有这样的文件或目录

编译错误:/ usr / bin / ld:找不到-lclntsh

/usr/bin/ld: 找不到 -lmsc----解决方案

/usr/bin/ld: 找不到 -lXext 依赖问题