我的Xcode目标链接到hdf5库(使用Link Binary和Libraries构建阶段).libhdf5是使用MacPorts安装的,因此/ opt/local/lib包含库的动态(.dylib)和静态(.a)版本.
构建中的文本输出显示,正如预期的那样,-lhdf5
构建的链接步骤中存在a.然而,gcc似乎将动态链接库放在静态上.有没有办法强制gcc(通过编译器开关或Xcode)与libhdf5.a静态链接?
我发现的唯一解决方案是将libhdf5.a复制到项目(或其他)目录并链接到该副本,从而避免在同一位置拥有动态和静态版本.
有这个完全相同的问题,尽管这是一个旧帖子,我想我会分享我必须做的工作.
通常你只是向链接器提供'-static'开关,然而,使用Xcode,这会导致包括crt在内的所有lib静态链接.我收到了错误:
can't locate file for: -lcrt0.o
当我试着这个.
对我有用的是取代:
-lmylib
同
/path/to/libmylib.a
注意:-l被删除.
回应你对Eduard Wirch回答的评论:如果用-l/full/path/to/libhdf5.a替换-lhdf5,你也可以只为这一个库控制静态链接