默认选项 GCC

gin*_*ino 2 c linux gcc

我正在 Linux 上用 C 处理这个文件:

#include "headerFiles.h"

#define TRUE  1
#define FALSE 0
#define BUFSIZE 256
#define SERVER_PORT 8887

int main (int argc, char *argv[])
{
    signal(SIGCHLD, SIG_IGN);

    int ls; // listen socket
    int s;  // descrittore socket
    int n;  // byte letti inviati
    int waitSize; // massimo numero persone in coda

    struct sockaddr_in serverAddr;
    struct sockaddr_in clientAddr;

    int clientAddrLen = sizeof( clientAddr );

    memset(&serverAddr,0,sizeof(serverAddr));

    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    serverAddr.sin_port = htons(SERVER_PORT);

    if( (ls = socket(AF_INET,SOCK_STREAM,0)) < 0) {

        perror("Errore: creazione della socket di asolto fallita!");
        exit(1);
    }

    int so_reuseaddr = TRUE;

    if( fork() == 0) {

        //---------------------------------------------------//
        //CODICE
        while (1) {

            char cmd[BUFSIZE];
            char var1[BUFSIZE];
            char var2[BUFSIZE];
            char string[100];

            memset(cmd, 0, sizeof(cmd));
            memset(var1, 0, sizeof(var1));
            memset(var2, 0, sizeof(var2));
            memset(string, 0, sizeof(string));
        }
    }

    close(s);
    exit(0);
}
Run Code Online (Sandbox Code Playgroud)

这段代码代表 C 上的迷你服务器,但我遇到了这个问题:How do I check if I have default gcc compiler options?

因为,例如,在 Mac 上我会收到一些警告,而在 Linux 上则不会。

更新:

为了编译,我使用这个 makefile:

elaborato: *.c *.h
    gcc *.c -o elaborato
Run Code Online (Sandbox Code Playgroud)

当我执行它时,我会:./elaborato

我想使用默认的 gcc 设置来编译这个程序。这个就够了吗?

bru*_*ceg 5

需要注意的一件事是,您的 gcc 版本很可能不同。如果运行 gcc -v,您将看到系统上启用的标志。例如:

gcc -v -o t9 t9.c
Run Code Online (Sandbox Code Playgroud)

为我显示了一堆这样的行:

Apple LLVM version 7.0.0 (clang-700.0.72)
Target: x86_64-apple-darwin14.5.0
Thread model: posix
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" \
-cc1 -triple x86_64-apple-macosx10.10.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage \
-emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name t9.c \
-mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -masm-verbose \
-munwind-tables -target-cpu core2 -target-linker-version 253.2 -v -dwarf-column-info \
-resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0 \
-fdebug-compilation-dir /Users/bruce/test -ferror-limit 19 -fmessage-length 193 \
-stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.10.0 \
-fencode-extended-block-signature -fmax-type-align=16 -fdiagnostics-show-option \
-fcolor-diagnostics -o /var/folders/kl/kz62dj0j3zx7zvdgs7w005_w0000gn/T/t9-e101bb.o -x c t9.c
clang -cc1 version 7.0.0 based upon LLVM 3.7.0svn default target x86_64-apple-darwin14.5.0
Run Code Online (Sandbox Code Playgroud)

除了选项都在很长的一行上,而不是如图所示换行。

  • @Olaf:OP 说他正在 Linux 和 Mac 上工作——在 Mac 上有警告,而不是在 Linux 上。目前尚不清楚他目前遇到的问题在哪里——可能两者都有,但也可能是其中之一。该技术适用于 clang 和 gcc。Mac 上有一个程序 gcc,但它(如输出所示)是一个伪装——它实际上是“clang”。但这可能就是 OP 在 Mac 上使用的。(Mac上的临时目录晦涩难懂,啰嗦。在我的Mac上,目前我的“TMPDIR=/var/folders/lj/kt7909lm8xj2tl001s6z265r0000gq/T/”,非常相似。只是不同。) (3认同)