首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与X11库链接的最佳实践

与X11库链接的最佳实践
EN

Stack Overflow用户
提问于 2011-05-17 21:54:15
回答 1查看 2.2K关注 0票数 2

我有一个在RedHat机器上开发的X11应用程序。当我迁移到CentOS时,X11库也随之迁移。从/usr/X11R6/lib64/usr/X11R6/lib (尽管两者都运行64位),我在其他地方的Linux/Unix系统上见过它们。

我使用了-I-L编译标志来直接指向makefile中的X11库目录,但后来我意识到,这需要在切换机器时更改makefile。

我的问题是,为了便于携带..。我应该继续在makefile中使用-I-L吗?如果是这样,有没有一种自动检测位置的方法?或者,我应该仅仅依靠用户在他们的LD_LIBRARY_PATH中拥有这些吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-19 15:24:38

如果你依赖GNU make,你可以这样做:

代码语言:javascript
复制
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/X11R6/lib64/libX11.so.*)))
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/X11R6/lib/libX11.so.*)))
X11LIBS ?= $(word 1, $(dir $(wildcard /usr/lib/libX11.so.*)))
# and so on for whatever paths you come across

LDFLAGS += -L$(X11LIBS) -R$(X11LIBS)

这允许用户在命令行(make X11LIBS=/usr/local/X11R6/lib)上覆盖X11LIBS,并在未提供用户选项的情况下尝试几个位置。

如果找不到路径,您甚至可以中止构建,例如

代码语言:javascript
复制
 ifeq ($(X11LIBS),)
 $(error Could not find X11 library path, please specify in X11LIBS
 endif

如果您满足于限制Makefile的可移植性,那么所有这些都只是一个选择:非GNU make很可能对这些宏不满意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6031847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档