首页 > 解决方案 > 在系统路径后添加库路径

问题描述

我正在寻找类似的东西-idirafter,但是对于库而不是包含。

我正在为 macOS 构建 GCC,目的是让我的用户可以在 El Capitan 的任何操作系统版本上运行它。在大苏尔之前,图书馆没有问题。我可以在运行 El Capitan 的旧笔记本电脑上构建并整理包含路径,以便在没有的情况下查看 Xcode SDK /usr/include(这发生在 Mojave)。

对于 Big Sur,Apple 决定采用/usr/lib类似的处理方式,因此我在specs文件中添加了以下内容:

*lib:
%{!static:
-L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lSystem}

但这样做的结果是链接使用

Library search paths:
    /opt/gcc-11.0.0/lib/gcc/x86_64-apple-darwin15/11.0.0
    /opt/gcc-11.0.0/lib/gcc
    /opt/gcc-11.0.0/lib
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
    /usr/lib
    /usr/local/lib

即 SDK 路径在之前/usr/lib/usr/local/lib在 Catalina 上运行良好,但在 El Capitan 上失败

ld: file not found: /usr/lib/system/libsystem_symptoms.dylib for architecture x86_64

(我认为这里发生的事情是 SDK 和实际库之间存在不一致)

标签: macosgcc

解决方案


推荐阅读