首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用clang编译C程序会导致致命错误:“errno.h”文件找不到

用clang编译C程序会导致致命错误:“errno.h”文件找不到
EN

Stack Overflow用户
提问于 2022-01-12 12:01:30
回答 1查看 1.6K关注 0票数 0

我目前正在尝试编译一个小型C程序,其中包括zmq

代码语言:javascript
复制
#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>

int main (void)
{
    //  Socket to talk to clients
    void *context = zmq_ctx_new ();
    void *responder = zmq_socket (context, ZMQ_REP);
    int rc = zmq_bind (responder, "tcp://*:5555");
    assert (rc == 0);

    while (1) {
        char buffer [10];
        zmq_recv (responder, buffer, 10, 0);
        printf ("Received Hello\n");
        sleep (1);          //  Do some 'work'
        zmq_send (responder, "World", 5, 0);
    }
    return 0;
} 

我所使用的系统是arm64达尔文和编译器:

代码语言:javascript
复制
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: arm64-apple-darwin21.2.0

使用以下命令:

代码语言:javascript
复制
clang --target=arm64 -I/usr/local/include server.c

其中产出:

/usr/local/include/zmq.h:56:10: fatal error: 'errno.h' file not found

我现在已经有4个小时的时间来解决这个问题,我已经尝试了以下几点:

从source

  • Installing安装zmq和czmq,通过vcpkg

  • Compiling和x86_64安装zmq,用arm64

  • Compiling安装gcc11

  • ,用cmake代替直接编译器command

  • tried通过无数的StackOverflow帖子

添加stdlibc/c++

  • Looking

代码语言:javascript
复制
ls /usr/local/include
czmq.h                 zdir_patch.h           zmq.h
czmq_library.h         zfile.h                zmq_utils.h
czmq_prelude.h         zframe.h               zmsg.h
node                   zgossip.h              zosc.h
zactor.h               zhash.h                zpoller.h
zargs.h                zhashx.h               zproc.h
zarmour.h              zhttp_client.h         zproxy.h
zauth.h                zhttp_request.h        zrex.h
zbeacon.h              zhttp_response.h       zsock.h
zcert.h                zhttp_server.h         zstr.h
zcertstore.h           zhttp_server_options.h zsys.h
zchunk.h               ziflist.h              ztimerset.h
zclock.h               zlist.h                ztrie.h
zconfig.h              zlistx.h               zuuid.h
zdigest.h              zloop.h
zdir.h                 zmonitor.h

我很确定这是愚蠢的,很容易在我的网站上丢失,但由于我对c++和c语言完全陌生,而且来自其他语言,我无法理解它。我想我只是需要一个合适的搜索词。

如果有人有一个解决方案,这是真正值得赞赏的,但SearchTerms和参考资料,以获得更多的了解周围的主题也是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2022-01-12 14:06:00

在macOS的最新版本中,头被隐藏在视线之外,而不是像在任何文明系统中那样被放置在/usr/include中。您可能需要设置:

代码语言:javascript
复制
export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include

或者:

代码语言:javascript
复制
PartA="/Applications/Xcode.app/Contents/Developer/Platforms/"
PartB="MacOSX.platform/Developer/SDKs/MacOSX.sdk"
export CPATH="$PartA/$PartB/usr/include"

为了让编译器找到标题,我在我的Mac上运行新版本的macOS的Mac上构建了GCC的自建版本(现在是相当古老的版本)。唯一的优点是目录名中没有空格。

设置CPATH可能就足够了。如果不是,如果它被设置为当前目录,则添加:

代码语言:javascript
复制
… -I "$CPATH" …

到编译器命令行可以解决这个问题。我不需要那样做。

我有这样的剧本:

代码语言:javascript
复制
#!/bin/sh
#
# @(#)$Id: gcc-env.sh,v 1.2 2021/11/24 03:02:03 jleffler Exp $
#
# Set GCC environment for macOS Catalina 10.15 (and maybe beyond)

MACOSX_SDK="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
export LIBRARY_PATH="$MACOSX_SDK/usr/lib"
export CPATH="$MACOSX_SDK/usr/include"
export MANPATH="$(clnpath $MANPATH:$MACOSX_SDK/usr/share/man)"

我使用. gcc-env来设置环境。我自己建的GCC编译器就能正常工作。

话虽如此,开箱即用的/usr/bin/gcc/usr/bin/clang等Xcode安装“自动”工作。但是,在安装Xcode之后,需要运行GUI (至少是简短的)。它应该提供安装一些额外的东西-让它做额外的安装。

当我为我的特定命令运行带有-v选项的命令时,我得到了输出:

代码语言:javascript
复制
$ clang -v -I/Users/jonathanleffler/inc -g -O3 -std=c11 -pedantic -Wall \
> -Wextra -Werror -Wshadow  -Wmissing-prototypes -Wpointer-arith  -Wold-style-definition \
> -Wcast-qual -Wstrict-prototypes -DHAVE_MEMMEM -DHAVE_STRNDUP -DHAVE_STRNLEN \
> -DHAVE_GETDELIM  -o fl fl.c -L/Users/jonathanleffler/lib/64  -ljl
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -disable-free -disable-llvm-verifier -discard-value-names -main-file-name fl.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15 -target-cpu penryn -dwarf-column-info -debug-info-kind=standalone -dwarf-version=4 -debugger-tuning=lldb -ggnu-pubnames -target-linker-version 530 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -I /Users/jonathanleffler/inc -D HAVE_MEMMEM -D HAVE_STRNDUP -D HAVE_STRNLEN -D HAVE_GETDELIM -I/usr/local/include -O3 -Wall -Wextra -Werror -Wshadow -Wmissing-prototypes -Wpointer-arith -Wold-style-definition -Wcast-qual -Wstrict-prototypes -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-extra-semi-stmt -Wno-quoted-include-in-framework-header -pedantic -std=c11 -fdebug-compilation-dir /Users/jonathanleffler/src/cmd -ferror-limit 19 -fmessage-length 100 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o /var/folders/vn/wv38v30s4hz3yvbkdtbn049c0000gn/T/fl-e87f7e.o -x c fl.c
clang -cc1 version 11.0.0 (clang-1100.0.33.17) default target x86_64-apple-darwin19.6.0
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
 /Users/jonathanleffler/inc
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.15.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -o fl -L/Users/jonathanleffler/lib/64 /var/folders/vn/wv38v30s4hz3yvbkdtbn049c0000gn/T/fl-e87f7e.o -ljl -L/usr/local/lib -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.osx.a
$

另请参阅:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70681216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档