gpt4 book ai didi

macos - 如何在构建时修改 .dylib 的安装名称

转载 作者:行者123 更新时间:2023-12-03 22:36:49 28 4
gpt4 key购买 nike

我正在 build google-gflags Mac OS X (10.7.1) 上 C++ 的命令行标志库。构建过程是这样的:

$ ./configure --prefix=output
$ make
$ make install

我想在构建时更改生成的共享库的安装名称,而不是使用 install_name_tool然后。

默认情况下, install name生成的共享库, libgflags.dylib , 是输出路径:
$ otool -L ./output/libgflags.dylib
$ ./output/libgflags.dylib:
/tmp/gflags-1.5/output/lib/libgflags.0.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
ld(1) 的手册页有一个 -install_name可用于在链接时更改动态库的安装名称的选项。

例如,使用一个虚拟程序:
$ g++ -dynamiclib temp.cc -install_name /tmp/temp.dylib -o temp.dylib
$ otool -L temp.dylib
temp.dylib:
/tmp/temp.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)

但是,我无法将此命令行选项与 ./configure 一起使用脚本。我试过手动设置 CFLAGS变量,但这会导致错误:
$ CFLAGS="-install_name /tmp/desired/location/libgflags.dylib" ./configure
checking for a BSD-compatible install... /opt/local/bin/ginstall -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/Users/vibhav/Code/install_name_test/gflags-1.5':
configure: error: C compiler cannot create executables

那么,我是否可以更改由 configure 生成的 .dylib 的安装名称?和 make不使用 install_name_tool ?

最佳答案

通常,通过 g++ 传递链接器参数必须以 -Wl 开头,空格必须用逗号替换。因此,如果您想将“-install_name/tmp/temp.dylib”传递给链接器,您需要调用它:

g++ -Wl,-install_name,/tmp/temp.dylib ...

关于macos - 如何在构建时修改 .dylib 的安装名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169398/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com