GNUstep - fatal error: 'objc/objc.h' file not found on Ubuntu 20.04

GNUstep - fatal error: 'objc/objc.h' file not found on Ubuntu 20.04

我有以下问题:

我在 Ubuntu 20.04 上,我正在尝试设置 GNUstep,这是我要构建的某些源二进制文件所必需的

(为了完成,我要构建的程序称为Advanced Rendering Toollḱit,可以在这里找到信息:https://cgg.mff.cuni.cz/ART/)。

当使用 clang-9 编译器构建时,在调用 make 命令后,我收到此错误消息:

fatal error: 'objc/objc.h' file not found

我应该提一下,总的来说,我对 Linux 还是很陌生。我所做的是通过

安装 GNUstep
sudo apt-get install gnustep gnustep-devel

按照网站上的建议 (http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux)。它导致收到提到的错误。

/usr/include/GNUstep/Foundation/Foundation.h:31:9: fatal error: 'objc/objc.h' file not found

接下来我尝试的是从同一网页下载提供的配置脚本并执行它们。当我这样做时,我收到了以下反馈:

checking whether objc really works... no. I don't seem to be able to use your Objective-C compiler to produce working binaries! Please check your Objective-C compiler installation. If you are using gcc-3.x make sure that your compiler's libgcc_s and libobjc can be found by the dynamic linker - usually that requires you to play with LD_LIBRARY_PATH or /etc/ld.so.conf. Please refer to your compiler installation instructions for more help. configure: error: The Objective-C compiler does not work or is not installed properly.

也许我弄错了,但是,我安装 GNUstep 的全部目的是让 Objective-C 在非 Apple 机器上编程成为可能。因此我不明白为什么它抱怨一个不工作的 Objective-C 编译器(顺便说一句,我在使用 gccg++ 作为编译器)。

我确实做了一些研究,发现了一些 Whosebug 帖子,建议我安装 libobjc2,但我怀疑这会随着 Ubuntu 20.04 而贬值。

老实说,我不知道出了什么问题,非常感谢您朝着正确的方向推动!非常感谢您帮助我!

虽然我不能说出我的问题到底是什么错误,但我得到了一些外部帮助,我们一起想出了一个适合我的解决方案。 出于调试目的,我们在我的 Ubuntu 环境中创建了一个测试用户帐户并重复了整个过程。它工作完美。 我们得出结论,我的用户帐户一定是本地出了问题。我确定我的环境变量有问题,尽管我未能清楚地识别错误(我是 Linux 初学者)。我选择了简单的方法,备份了重要文件,删除并重新创建了我的根用户帐户,然后就可以了。我希望,这可以帮助任何其他有同样问题的人。 @skaak,感谢您的帮助和建议!

正如人们所指出的,如果你想在Ubuntu中使用clang编译objective C程序你必须安装libobjc2(主流项目here)但是它是当前未打包在 Ubuntu 中。正如您发现的那样,可能有一个名称相同或相似的包,但那是另一回事。此手动安装对我有用:

wget https://github.com/gnustep/libobjc2/archive/v2.0.tar.gz
tar xvzf v2.0.tar.gz
cd libobjc2-2.0
mkdir build
cd build
export CC=`which clang`
export CXX=`which clang++`
cmake ..
make
sudo make install