gpt4 book ai didi

在 2 个不同版本的 gcc 上编译源代码

转载 作者:太空狗 更新时间:2023-10-29 16:58:18 25 4
gpt4 key购买 nike

我正在两台使用不同版本 gcc 的不同机器上编译我的源代码。

cflags c89

-Wall -Wextra -Wunreachable-code -g -m32 -D_DEBUG -O0 -D_LARGEFILE64_SOURCE -D_REETRANT -D_THREAD_SAFE

一个是redhat-4

gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Linux 203_test_server 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

还有一个是 Fedora 18

gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)
Linux localhost.localdomain 3.8.1-201.fc18.x86_64 #1 SMP Thu Feb 28 19:23:08 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

我的 fedora 18 编译没有错误。但是,在 redhat 4 机器上我遇到了一些错误。

channel.h:35: error: redefinition of typedef ‘channel_t’
internal.h:19: error: previous declaration of ‘channel_t’ was here

我认为错误只是一个循环问题。但是,使用相同的代码库在 2 台不同的机器上编译使用 2 个不同版本的 gcc 真的会有所不同吗?

我认为使用较新版本的编译器会产生更多错误,因为较新的编译器可能更严格。

这不是解决错误的问题,而是关于编译器的一般问题。

我可以设置任何标志来避免将来出现这种情况吗?也许如果在这个版本的 gcc 上编译会这样做,如果版本不兼容?

最佳答案

这取决于源代码中包含哪些 header 。如果您要链接到外部库,则可能是您的源代码与旧系统上安装的库版本不兼容。

如果源代码不包含任何外部库 header (C 库除外),则可能存在需要更改的预处理器指令。

编辑:

经过 Google搜索,似乎 channel_t 来自内核头文件。您在两台机器上使用的内核版本相距甚远。如果代码依赖于内核头文件,它可能需要比 Red Hat 机器上更新的内核版本。您还没有指定代码是什么(它是设备驱动程序吗?),或者它包含哪些文件,所以很难多说。

关于在 2 个不同版本的 gcc 上编译源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com