Articles of gcc

在构build期间将静态库链接到共享库?

使用GCC / Linux构build共享库时遇到问题。 目前这个共享库是用GCC / libtool选项“-shared”创build的,一切正常。 现在有两个额外的静态库(.a-files)必须被添加到这个共享库中,因为它们提供了共享所需的一些function。 添加这些静态库的选项“-l”没有帮助,之后他们不是.so文件的一部分。 那么我怎么能强制GCC / libtool真的把这些静态库的代码添加到共享库中呢? 谢谢!

为什么linux内核使用非标准的C(gcc特定function)编码?

Linux内核代码使用“语句expression式”和扩展的types,使其只能在gcc下编译。 更多的是我想,更多的是没有意义的。 它违背了可移植性和标准C的目的(现在的linux内核代码需要一个支持gcc扩展的特定编译器)。 这是一个糟糕的deviseselect,还是有一个特定的原因使Linux内核代码特定于GCC? 编辑:当我说它失败的可移植性,我在不同的情况下使用它。 我认为,通过符合标准C,任何支持标准C的编译器(这正是创build一个标准的目的 – 统一C的所有不同的方言)的接受,因此更便携。 当然,由于海湾合作委员会如此受欢迎,海湾合作委员会支持数亿架构,这条线几乎毫无意义。 我只是问是否有一个不符合标准C的具体理由。

Pyaudio安装错误 – '命令'gcc'失败,退出状态1'

我正在运行Ubuntu 11.04,Python 2.7.1,并希望安装Pyaudio。 所以我跑了, $ sudo easy_install pyaudio 在terminal和进程退出以下错误消息, searchpyaudio 阅读http://pypi.python.org/simple/pyaudio/ 阅读http://people.csail.mit.edu/hubert/pyaudio/ 最佳匹配:pyaudio 0.2.4 正在下载http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.4.tar.gz 处理pyaudio-0.2.4.tar.gz 运行PyAudio-0.2.4 / setup.py -q bdist_egg –dist-dir /tmp/easy_install-0Tetss/PyAudio-0.2.4/egg-dist-tmp-PYy9T8 在/usr/include/python2.7/Python.h:8:0包含的文件中, 来自src / _portaudiomodule.c:30: /usr/include/python2.7/pyconfig.h:1155:0:警告:“_POSIX_C_SOURCE”重新定义 /usr/include/features.h:214:0:注意:这是以前定义的位置 src / _portaudiomodule.c:31:23:致命错误:portaudio.h:没有这样的文件或目录 编译终止。 错误:安装脚本退出错误:命令'gcc'失败,退出状态1 我不确定是否发布在askubuntu.com或在这里stackoveflow,但无论如何这里是在stackoverflow。 另外我google'd有点这个问题,发现通过安装python-dev已经解决了一些问题。 我已经安装了python-dev。 可能出了什么问题? UPDATE 以下是安装libportaudio-dev后得到的新错误, searchpyaudio 阅读http://pypi.python.org/simple/pyaudio/ 阅读http://people.csail.mit.edu/hubert/pyaudio/ 最佳匹配:pyaudio 0.2.4 正在下载http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.4.tar.gz 处理pyaudio-0.2.4.tar.gz 运行PyAudio-0.2.4 / setup.py -q bdist_egg –dist-dir /tmp/easy_install-LMpsIy/PyAudio-0.2.4/egg-dist-tmp-AExlqd 在/usr/include/python2.7/Python.h:8:0包含的文件中, […]

GCC详细模式输出说明

我是新来的Linux。 任何人都可以向我解释我的hello世界程序的详细模式输出? 另外,什么文件crt1.o , crti.o , crtend.o , crtbegin.o和crtn.o和lc和lgcc呢? 任何其他的解释链接也是受欢迎的。 $ gcc -v hello.c Reading specs from /usr/lib/gcc-lib/i686/3.3.1/specs Configured with: ../configure –prefix=/usr Thread model: posix gcc version 3.3.1 /usr/lib/gcc-lib/i686/3.3.1/cc1 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=1 hello.c -quiet -dumpbase hello.c -auxbase hello -Wall -version -o /tmp/cceCee26.s GNU C version 3.3.1 (i686-pc-linux-gnu) compiled by GNU C version 3.3.1 […]

C预处理器如何处理循环依赖?

我想知道C预处理器如何处理循环依赖(#defines)。 这是我的程序: #define ONE TWO #define TWO THREE #define THREE ONE int main() { int ONE, TWO, THREE; ONE = 1; TWO = 2; THREE = 3; printf ("ONE, TWO, THREE = %d, %d, %d \n",ONE, TWO, THREE); } 这是预处理器输出。 我无法弄清楚为什么输出是这样的。 我想知道预处理器在这种情况下采取的各种步骤,以提供以下输出。 # 1 "check_macro.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "check_macro.c" int […]

如何为微处理器SA1100安装交叉编译器(在ubuntu 12.04 LTS上)?

有人可以告诉我如何为SA1100微处理器安装交叉编译器(编程语言C)吗? 我有Ubuntu的12.04 LTS。 我是Linux的完全noob,我昨天刚刚安装了Ubuntu。 我需要一个名为“arm-unknown-linux-gnu-gcc”的GCC编译器的特殊变体,但不知道如何去做。 有人可以帮帮我吗?

<sys / queue.h>库中TAILQ用法的最小示例

有人可以从Linux系统库中提供TAILQ用法的最小例子,用c语言解释,可以在Linux中用gcc编译?

漂亮的打印makefiles

linux内核(以及包括git在内的各种其他项目)都有非常好的makefile,可以将巨大的cc调用隐藏起来。 例如: gcc -O2 -o cool.o cool.c -llib gcc -O2 -o neat.o neat.c -llib 会成为: CC cool.c CC neat.c 如果你有一个大量的文件和长的编译器标志的项目,这是非常好的。 我记得这是为了抑制默认的输出和自定义输出。 你怎么做呢?

为什么从.o创build一个.a文件来进行静态链接?

考虑这个代码: one.c: #include <stdio.h> int one() { printf("one!\n"); return 1; } two.c: #include <stdio.h> int two() { printf("two!\n"); return 2; } prog.c中 #include <stdio.h> int one(); int two(); int main(int argc, char *argv[]) { one(); two(); return 0; } 我想将这些程序链接在一起。 所以我这样做: gcc -c -o one.o one.c gcc -c -o two.o two.c gcc -o a.out prog.c […]

交叉编译器在Mac OS X上的Linux

我一直在读互联网上的许多文件关于在Mac OS X上创build一个交叉编译器的Linux,但不能缝到任何工作。 它似乎没有人能帮我解决这个问题: 让GMP与GCC 4.5.2一起工作 有什么简单的方法来创build交叉编译器?