免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 12019 | 回复: 21
打印 上一主题 下一主题

如何用automake 在Makefile 中生成 这样的FLAG “-Wl,-rpath=/usr11111/lib” [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-09 17:06 |只看该作者 |倒序浏览
换种方式问问题,

如何用automake 在Makefile 中生成 这样的FLAG “-Wl,-rpath=/usr11111/lib”



本来想用命令行来做,像这样:
./configure ... LDFLAGS=...:-Wl,-rpath=/usr11111/lib

可惜实践证明了这样是不行的

论坛徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
2 [报告]
发表于 2011-05-09 17:22 |只看该作者
./configure LDFLAGS="-Wl,-rpath=/usr11111/lib"

我这里可以的啊,最后LD的时候带上自设的参数了

论坛徽章:
0
3 [报告]
发表于 2011-05-09 18:29 |只看该作者
本帖最后由 bittertea 于 2011-05-09 18:30 编辑

为什么要手动定义LDFLAGS变量? 直接在configure.in用AC_SUBST导出指定名称的路径, 然后Makefile.am使用这些路径不行么?

论坛徽章:
0
4 [报告]
发表于 2011-05-09 18:58 |只看该作者
to bittertea:
请教具体要怎么做呢?

论坛徽章:
0
5 [报告]
发表于 2011-05-09 19:08 |只看该作者
本帖最后由 reer 于 2011-05-09 19:14 编辑

另外,应该不是手动定义或者自动定义LDFLAGS的问题,而是定义的LDFLAGS格式不对,不能发挥预期的作用



我预期的作用是:
LDFLAGS = -L/home/work/..../lib
LDFLAGS += -Wl,-rpath,/usr11111/lib



其实把-Wl,-rpath,/... 放到LDFLAGS 可能也不对,总之,我是被Makefile 彻底搞死了,大家救命啊!!!



nnd,感觉是被automake 搞了,这套东西还不如直接的makefile来得简单,感觉掌握automake 这一套东西不容易...

论坛徽章:
0
6 [报告]
发表于 2011-05-09 22:51 |只看该作者
你是不是想要依赖第三方库?比如形如./configure --with-some-libs="mylibpath"?

论坛徽章:
0
7 [报告]
发表于 2011-05-09 23:42 |只看该作者
像这样?

bin_PROGRAMS = tconf
tconf_SOURCES = callback.c main.c parser.c session.c tc.c tcglobal.c wrap.c wizard.c
tconf_LDADD = @GTK_LIBS@ -L. -ltc $(LIBINTL)

论坛徽章:
0
8 [报告]
发表于 2011-05-09 23:43 |只看该作者
像这样?

bin_PROGRAMS = tconf
tconf_SOURCES = callback.c main.c parser.c session.c tc.c tcglobal.c wrap.c wizard.c
tconf_LDADD = @GTK_LIBS@ -L. -ltc $(LIBINTL)

论坛徽章:
0
9 [报告]
发表于 2011-05-10 09:09 |只看该作者
本帖最后由 reer 于 2011-05-10 09:36 编辑

是啊,要依赖第三方的一个动态库,这个库在运行程序(在arm平台上)的时候在 /usr11111/lib/ 下

你是不是想要依赖第三方库?比如形如./configure --with-some-libs="mylibpath"?
bittertea 发表于 2011-05-09 22:51

论坛徽章:
0
10 [报告]
发表于 2011-05-10 09:42 |只看该作者
本帖最后由 bittertea 于 2011-05-10 09:47 编辑

configure.in里用 AC_CHECK_LIB检查依赖,比如:
AC_CHECK_LIB(resolv, inet_aton) , AC_CHECK_LIB检测成功后会追加(LIBS)变量

或者复杂点的:
  1. dnl Check for OpenSSL libraries.
  2. OPENSSL_LIBS=
  3. old_LIBS=$LIBS
  4. if test "x$OPENSSL_LIB_DIR" != "x"; then
  5.     LIBS="-L$OPENSSL_LIB_DIR $LIBS"
  6. fi
  7. AC_CHECK_LIB(crypto, MD5_Init,
  8.     [
  9.         AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the 'crypto' library (-lcrypto).])
  10.         if test "x$OPENSSL_LIB_DIR" != "x"; then
  11.             OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
  12.         fi
  13.         if test "x$STATIC_LINK" = "xtrue";then
  14.              OPENSSL_LIBS="$OPENSSL_LIB_DIR/libcrypto.a"
  15.          else
  16.         OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto"
  17.         fi
  18.     ], [AC_MSG_ERROR([-lcrypto not found, please install openssl first])])
  19. LIBS=$old_LIBS
  20. ......
  21. AC_SUBST(OPENSSL_LIBS)
  22. export OPENSSL_LIBS

  23. ## 然后你在你的Makefile.am里的****_LDADD="$(OPENSSL_LIBS)"即可
复制代码
以上大部分脚本参考一些autotools做的开源项目. GOOGLE CODE SEARCH--利器
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP