- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 makefile 的初学者开发人员,并且有一个包含 src 目录的项目。 src 目录中有一些 .c 和 .h 文件,如下所示:file1.c、file2.c、main.c、header1.h 和 header2.c。 Main 依赖于 file2.c,而 file2.c 依赖于 file1.c。每个文件都应该链接到我拥有的非标准库和非标准包含目录。库目录和包含目录分别为 /usr/lib/srr__lib
和 /usr/bin/srr__bin
。我写了两个makefile,一个在src目录,另一个在项目的根目录。 src makefile如下所示:
CC = gcc
TARGETDIR_PR=GNU-amd64-Linux
all: $(TARGETDIR_PR)/PR
OBJS_PR = \
$(TARGETDIR_PR)/file1.o \
$(TARGETDIR_PR)/file2.o \
$(TARGETDIR_PR)/main.o
AM_CPPFLAGS = \
-DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\"
AM_CFLAGS =\
-g -I/usr/bin/srr__bin
bin_PROGRAMS = PR
PR_4_SOURCES = \
file1.c \
file2.c \
main.c
PR_LDFLAGS =
PR_LDADD = -L/usr/lib/srr__lib -lsrr__ml__sharedmem_4core -lprdependency -lsrrdsl___wrapper_library__ml -lsrrdynarray -lsrrdynarray_pic -lsrrhistogram -lsrrhistogram_pic -lsrrlistofarrays -lsrrlistofarrays_pic -lsrrmalloc -lsrrparam -lsrrparam_pic -lsrrqueue -lsrrqueue_pic -lvreo_wrapper_library
$(TARGETDIR_PR)/PR: $(TARGETDIR_PR) $(OBJS_PR)
$(LINK.c) $(AM_CFLAGS) $(AM_CPPFLAGS) -o $@ $(OBJS_PR) $(PR_LDADD)
$(TARGETDIR_PR)/SeedVP.o: $(TARGETDIR_PR) SeedVP.c
$(COMPILE.c) $(AM_CFLAGS) $(AM_CPPFLAGS) -o $@ file1.c
$(TARGETDIR_PR)/Task.o: $(TARGETDIR_PR) Task.c
$(COMPILE.c) $(AM_CFLAGS) $(AM_CPPFLAGS) -o $@ file2.c
$(TARGETDIR_PR)/main.o: $(TARGETDIR_PR) main.c
$(COMPILE.c) $(AM_CFLAGS) $(AM_CPPFLAGS) -o $@ main.c
clean:
rm -f \
$(TARGETDIR_PR)/PR \
$(TARGETDIR_PR)/file1.o \
$(TARGETDIR_PR)/file2.o \
$(TARGETDIR_PR)/main.o
rm -f -r $(TARGETDIR_PR)
# Create the target directory (if needed)
$(TARGETDIR_PR):
mkdir -p $(TARGETDIR_PR)
# Enable dependency checking
.KEEP_STATE:
.KEEP_STATE_FILE:.make.state.GNU-amd64-Linux
根目录的makefile如下所示:
SUBDIRS = src
PRDSL_4docdir = ${prefix}/doc/PR
PRdoc_DATA = \
README\
COPYING\
AUTHORS\
ChangeLog\
INSTALL\
NEWS
INTLTOOL_FILES = intltool-extract.in \
intltool-merge.in \
intltool-update.in
EXTRA_DIST = $(PRdoc_DATA) \
$(INTLTOOL_FILES)
DISTCLEANFILES = intltool-extract \
intltool-merge \
intltool-update \
po/.intltool-merge-cache
# Remove doc directory on uninstall
uninstall-local:
-rm -r $(PRdocdir)
我成功运行了所有 autotools 命令,然后执行了 ./configure,并且该项目没有提示; make 没有错误,但是当我将生成的可执行文件运行为 ./PR 时,它会提示并给出以下错误:
error while loading shared libraries: libsrr__ml__sharedmem_4core.so: cannot open shared object file: No such file or directory
我认为这可能是链接错误,因为库是 64 位,我的机器也是 64 位。但是,我如何在 makefile 中提及这一点呢?任何帮助将不胜感激。
最佳答案
运行程序时这样运行
export LD_LIBRARY_PATH=/usr/lib/srr__lib
./executable_file
或编辑/etc/ld.so.conf
并添加行
/usr/lib/srr__lib
并以 root 身份运行 ldconfig
。
关于linux - 如何在 makefile 中将您的项目链接到 64 位库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726304/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!