![](/img/trans.png)
[英]/usr/bin/ld: cannot find : No such file or directory - caused by makefile error
[英]makefile error: /usr/bin/ld: cannot find -llibname and makedepend
我正在尝试为小型项目编写我自己的makefile,我的项目由src目录组成,该目录包含main.c,file1.c,file2.c,header1.h,最后是header2.h,这些文件使用非标准库中的某些库我已创建的目录和非标准头文件,libraries目录位于usr / lib / pr__lib,头目录位于usr / include / lib,因此我应该创建两个makefile.am,一个将位于src目录,另一个将在项目的根目录中,src目录的makefile.am如下所示:
program_NAME := myproject
AM_CPPFLAGS = \
-DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\"
bin_PROGRAMS = myproject_AutoProject
program_INCLUDE_DIRS := /usr/bin/srr__bin
program_LIBRARY_DIRS := /usr/lib/srr__lib
AM_CFLAGS =
AM_CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
program_lib2 := \
libsrr\
libprdsl \
libtwo \
libhistogram \
libhistogram_pic \
libprlistofarrays \
libprlistofarrays_pic \
libprmalloc \
libvreo
AM_LDFLAGS =
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
AM_LDFLAGS += $(foreach library,$(program_lib2),-l$(library))
PRDSL_AutoProject_SOURCES = \
main.c \
file1.c \
file2.c
depend :
makedepend -$(CFLAGS) -$(PRDSL_AutoProject_SOURCES)
all: $(program_NAME)
第二个makefile.am如下所示:
SUBDIRS = src
myproject_AutoProjectdocdir = ${prefix}/doc/PRDSL_AutoProject
myproject_AutoProjectdoc_DATA = \
README\
COPYING\
AUTHORS\
ChangeLog\
INSTALL\
NEWS
INTLTOOL_FILES = intltool-extract.in \
intltool-merge.in \
intltool-update.in
EXTRA_DIST = $(myproject_AutoProjectdoc_DATA) \
$(INTLTOOL_FILES)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update \
po/.intltool-merge-cache
# Remove doc directory on uninstall
uninstall-local:
-rm -r $(PRDSL_AutoProjectdocdir)
但我收到以下错误:
/usr/bin/ld: cannot find -llibsrr
/usr/bin/ld:.......
其他库也一样! 我想这是depend命令中的问题,谁能告诉我如何使用depend命令以便自动创建依赖关系并避免人为错误
您能否进行更改,并让我知道:
PathToMySource=`pwd`
Program_INCLUDE_DIRS := /usr/bin/srr__bin
program_LIBRARY_DIRS := /usr/lib/srr__lib
AM_CFLAGS =
AM_CFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
program_lib2 := \
$(PathToMySource)/libsrr\
$(PathToMySource)/libprdsl \
$(PathToMySource)/libtwo \
$(PathToMySource)/libhistogram \
$(PathToMySource)/libhistogram_pic \
$(PathToMySource)/libprlistofarrays \
$(PathToMySource)/libprlistofarrays_pic \
$(PathToMySource)/libprmalloc \
$(PathToMySource)/libvreo
AM_LDFLAGS =
AM_LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
AM_LDFLAGS += $(foreach library,$(program_lib2),-l$(library))
PRDSL_AutoProject_SOURCES = \
main.c \
file1.c \
file2.c
depend :
makedepend -$(CFLAGS) -$(PRDSL_AutoProject_SOURCES)
all: $(program_NAME)
我假设文件夹位于预期运行make文件的目录中。
如果不是,请添加另一个变量并设置路径。 然后在PathToMySource位置使用该变量。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.