当尝试在Mac OS X Sierra上使用PGI编译Fortran时,我收到错误
ld: file not found: /usr/lib/crt1.o
我找到了旧Mac OS X版本(http://www.pgroup.com/userforum/viewtopic.php?t=4578)
的解决方法sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/crt1.o /usr/lib/crt1.o
但是,对于Sierra,系统完整性保护会阻止在/usr/bin
中写入。我该如何解决这个问题?
我尝试链接到/usr/local/bin/
(允许),但是,我怎样才能确保编译器在该路径中搜索库?
答案 0 :(得分:9)
仅安装Mac OS X的命令行工具解决了这个问题。在您的终端中执行此操作:
xcode-select --install
答案 1 :(得分:1)
在MacOS X上安装Lazarus: 为我工作
答案 2 :(得分:0)
命令行程序的解决方案:
对我来说正确的答案如以下链接所述:
https://medium.com/@kviat/free-pascal-3-0-2-linking-on-macos-sierra-c40706e86fda
经过一番谷歌搜索后,我意识到大多数库已从 macOS Sierra中的/ usr / lib。但是这种情况是在FPC中处理的,所以我们 只需将内部编译器变量MacOSXVersionMin设置为10.8 (或更高版本)。没有标准的编译器选项,但是之后 我在源代码中进行了一些搜索,找到了解决方法:设置环境 变量MACOSX_DEPLOYMENT_TARGET:
您应该指定MacOS的部署目标:
MACOSX_DEPLOYMENT_TARGET= XX.XX #for instance 10.15
一般解决方案:
将必要的文件链接到/ usr / bin / crt *。如前所述,MacO从10.10开始将禁止这种链接。但是仍然有一种方法可以完成此链接过程,并且可以解决该问题。
1)听到启动提示音后,重新启动Mac并同时按住Command + R
键,这会将Mac OS X引导到恢复模式
2)当出现“ MacOS Utilities” /“ OS X Utilities” 屏幕时,请下拉屏幕顶部的“ Utilities”菜单,然后选择“ Terminal
”。 ”
3)在终端中键入以下命令,然后按回车键:
csrutil disable; reboot
4)当您回来时,运行命令sudo mount -uw /
5)只需运行您想要的链接代码:
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/crt1.o /usr/lib/crt1.o
来源:http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/ https://www.reddit.com/r/MacOS/comments/caiue5/macos_catalina_readonly_file_system_with_sip/
答案 3 :(得分:0)
就我而言,问题实际上是PGI安装方面的错误。 PGI似乎很清楚,macOS的较新版本没有/usr/lib/crt1.o
,并且您无法再在其中创建文件。但是可以为PGI编译器设置正确的环境变量,然后链接器应使用指向crt1.o
的正确路径。
应在PGI编译器套件的安装过程中通过运行makelocalrc
命令自动完成此配置,并应生成文件/opt/pgi/osx86-64/$PGIVER/bin/localrc
。但就我而言,这一步骤无声地失败了。
失败的原因似乎是:
/opt/pgi/osx86-64/$PGIVER/bin/localrc.error
,其中包含一些详细信息makelocalrc
脚本时得到的:makelocalrc -x /opt/pgi/osx86-64/19.10
Error: Unsupported XCode version 11
在我的情况下(PGI 19.10,macOS 10.15,XCode 11.2.1),我手动修补了/opt/pgi/osx86-64/19.10/bin/makelocalrc
以便在XCode 11上不会出错:
if test $xcodever -gt 11 ; then # <-- was "-gt 10"!
echo " Error: Unsupported XCode version " $xcodever
exit -1
fi
,然后重新运行脚本,然后使用PGI编译器(pgcc
和pgfortran
)进行编译:
sudo /opt/pgi/osx86-64/2019/bin/makelocalrc -x /opt/pgi/osx86-64/19.10
您的情况可能会有所不同,但是您可能需要检查/opt/pgi/osx86-64/$PGIVER/bin/localrc.error
或/opt/pgi/osx86-64/$PGIVER/bin/localrc
本身,如果不存在或升级了XCode /自从安装了PGI编译器后,就进入了macOS。