在Mac OS X上,此命令
ar rcs libio.a a.o b.o c.o
应转换为:
libtool -static -o libio.a a.o b.o c.o
获取正确的静态库。
然后,在命令行或makefile中执行libtool ...
时,如何自动调用ar ...
?我可以通过提出一个解析和调用ar
的新ar
命令来隐藏旧libtool
命令,但我想知道可能有更简单的方法。
答案 0 :(得分:0)
正确的解决方案是以允许您指定构建静态库的命令的方式编写Makefile。例如:
# Linux
MAKESTATICLIB = ar rcs
# Mac OS X
MAKESTATICLIB = libtool -static -o
# Usage
libio.a: a.o b.o c.o
$(MAKESTATICLIB) $@ $^
答案 1 :(得分:0)
如果你真的想写一个包装器脚本,它看起来像这样:
libfile=$1
shift
libtool -static -o $libfile $*
您可以将其放在名为" ar"的文件中,使其可执行(chmod +x ar
),并将其放在您的搜索路径将找到它的目录中,也许是您的个人bin目录,或者/ usr / local / bin /。 (如果您的搜索路径包含当前目录,您也可以将其放在当前目录中,但出于安全原因,通常不鼓励这样做。)
我怀疑你还需要创建一个"包装器"名为ranlib
的脚本什么都不做。
[P.S。我的例子忽略了你的问题陈述中潜伏的奇怪rcs
,我怀疑这是一种错误。]