macos - 构建和测试 SWIG,获取“强化程序中不允许的文件系统相对路径”
问题描述
我正在尝试在 macOS Catalina 10.15.7 上构建 swig。
在使用系统 perl 构建 swig 时,我最初得到“强化程序中不允许的文件系统相对路径”。我从源代码安装了我自己的 perl 版本,它似乎更进一步。我可以构建 swig,但我仍然收到一个错误:当我运行“make check”时,“强化程序中不允许文件系统相对路径”。
错误信息:
...
checking Examples/python/import_packages
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/Users/tom/PycharmProjects/SpeechRecognitionTest/swig-4.0.2/Examples/python/import_packages/same_modnames1/pkg2/foo.py", line 13, in <module>
from . import _foo
ImportError: dlopen(pkg2/_foo.so, 2): no suitable image found. Did find:
file system relative paths not allowed in hardened programs
Traceback (most recent call last):
File "runme.py", line 26, in <module>
run_except_on_windows(commandline)
File "runme.py", line 8, in run_except_on_windows
subprocess.check_call(commandline, env=env, shell=True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 190, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -m pkg2.foo' returned non-zero exit status 1
make[4]: *** [python_run] Error 1
make[3]: *** [check] Error 2
make[2]: *** [check] Error 1
make[1]: *** [import_packages.actionexample] Error 2
我的目标是使用 python 3.9,而不是 python 2.7,但“make check”似乎是检查 python 2.7。我尝试使用 3.9 和 venv,并且“make check”在没有 () 的打印调用上失败,所以我假设测试套件只有 2.7。
从谷歌搜索来看,“强化程序中不允许的文件系统相对路径”似乎是由于一些新的 macOS 安全功能。转移到我自己的 perl 版本,并将 CPATH 设置为该版本减少了我得到的这些错误的数量。但我还有一个。
如果我不使用 python 2.7,我可以继续吗?有没有办法来解决这个问题?
我实际上只是在尝试构建使用 swig 的 PocketSphinx。
解决方案
推荐阅读
- java - 如何使用用于 git api 的 java 库以编程方式从哈希值远程获取标签或分支名称?
- jquery - jQuery 的 ajax 中的 async: false 是否也会在回调期间阻塞 UI?
- typescript - *ngIf 条件满足为真但模板未重新加载
- caching - webpack 中的“CacheGroup”是什么
- python - Python:对交易进行分类的最有效方法
- hibernate - hibernate 生成的请求不符合书面请求
- google-apps-script - 以模板化 HTML 格式提供云端硬盘存储的图像(Google Apps 脚本)
- javascript - 当拖动到特定列时,我想防止在 js 中插入该列
- reactjs - 已关闭标题和图像背景之间的空白React-Native
- python - 如何在直方图中拆分和堆叠条形图,仅对较低的条形进行孵化?