在编译ObjC代码的更简洁方法有提到,可以用更简洁的命令行在Ubuntu 22.04下编译ObjC环境,其实还可以更简洁,如下我们将构造一个clang-objc软链接,可以直接使用clang-objc demo.m编译。
- 为了避免和平台已有clang命令冲突,我们先复制一个clang可执行档,命名为clang-objc.
sudo cp /usr/lib/llvm-14/bin/clang /usr/lib/llvm-14/bin/clang-objc - 在/usr/bin目录构造clang-objc的软链接
sudo ln -s /usr/lib/llvm-14/bin/clang-objc /usr/bin/clang-objc - 利用alias命令进一步精简clang-objc
alias clang-objc='clang-objc -I `gnustep-config --variable=GNUSTEP_SYSTEM_HEADERS` -L `gnustep-config --variable=GNUSTEP_SYSTEM_LIBRARIES
` -lgnustep-base -lobjc -I /usr/lib/gcc/x86_64-linux-gnu/11/include -fconstant-string-class=NSConstantString'
OK, 可以用clang-objc demo.m编译你的文件了。
注意事项
- clang编译ObjC,依然需要链接libobjc,如果有升级软件gcc,可能出现clang找不到libobjc, 需要在编译选项中单独添加链接库路径,例如:
libobjc位于/usr/lib/gcc/x86_64-linux-gnu/11/libobjc.so
需要增加选项:-L /usr/lib/gcc/x86_64-linux-gnu/11