Articles of gcc

可以在Linux上使用.dll

问题:是否可以使用.dll文件在Linux上编译程序? 这是怎么回事:这个.dll将被用来写第三方的一些专有软件的PHP扩展。 背景和研究: 我有一个名为proprietary.lib的库。 我很好奇,因为我从来没有见过.lib扩展名,所以我input: file proprietary.lib 输出是: proprietary.lib: current ar archive 我做了一些研究,发现ar是或多或less的tar (事实上​​,我猜tar已经在大多数* nix环境中取代了ar )。 在检查ar页时,我看到了t option ,它显示了该存档内容的表格列表。 凉。 所以我input: ar t proprietary.lib 并得到: proprietary.dll proprietary.dll … (snip X lines) …

我不明白为什么编译器给我错误的代码

我有以下C代码,这对我来说看起来非常正确。 但是,clang编译器(实际上gcc或任何其他C编译器)则认为不然。 typedef struct { struct timeval td_start; struct timeval td_end; } Timer; void startTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_start), NULL ); } void stopTimer( struct Timer* ptimer ) { gettimeofday( &(ptimer->td_end), NULL ); } 编译器给出以下waring&error消息。 任何想法这里有什么不对? ./timing.h:14:25: warning: declaration of 'struct Timer' will not be visible outside of this function [-Wvisibility] void […]

GCC为什么以及如何编译一个缺lessreturn语句的函数?

#include <stdio.h> char toUpper(char); int main(void) { char ch, ch2; printf("lowercase input : "); ch = getchar(); ch2 = toUpper(ch); printf("%c ==> %c\n", ch, ch2); return 0; } char toUpper(char c) { if(c>='a'&&c<='z') c = c – 32; } 在toUpper函数中,返回types是char,但toUpper()中没有“return”。 并用gcc(GCC)4.5.1 20100924(Red Hat 4.5.1-4),fedora-14编译源代码。 当然,发出警告:“警告:控制达到非无效function结束”,但运行良好。 在使用gcc进行编译时,代码中发生了什么? 我想在这种情况下得到一个坚实的答案。 谢谢 :)

制作一个Ubuntu可执行文件

我使用gcc编译器在C中创build了一个程序。 现在它没有GUI组件。 我正在使用makefile编译它并在terminal中运行它。 我需要部署它,以便可执行文件是独立的。 我想要可执行文件有一个图标,点击时在terminal启动程序。 谁能告诉我如何做到这一点?

使用glibc在非标准位置build立GCC

我有一个我没有root权限的系统,但是我需要安装当前版本的GCC(4.7.2)。 系统正在运行Linux 2.6.18的x86_64版本,并且已经有了GCC 4.1(即使–version说它是用它构build的,也不支持C ++支持)。 编辑5:在这一点上,下面的步骤只是我试过的一套。 从那时起我已经开始干净了几次了。 我正在寻找一个人来详细说明我需要的所有开关所需的确切顺序。 这是我到目前为止所经历的过程(其中ROOT是我的主目录中的一个文件夹) make-3.82>./configure –prefix=$ROOT && make && make install && hash -r binutils-2.23>./configure –prefix=$ROOT && make && make install autoconf-2.69>./configure –prefix=$ROOT && make && make install automake-1.9>./configure –prefix=$ROOT && make && make install flex-2.5.37>./configure –prefix=$ROOT && make && make install libunwind-1.1>./configure –prefix=$ROOT && make && make install gcc-4.7.2-scratch>../gcc-4.7.2/configure […]

gcc -mpreferred-stack-boundary选项

我想知道GNU编译器在编译过程中使用了-mpreferred-stack-boundary选项。 我查过了文档,但是我的解释没有了。 有人可以解释一下吗?

核心实用程序缺less__vdso_time?

我build立了最新的glibc,现在我在使用ls或cat类的coreutils函数或vim类的函数时遇到了一些麻烦。 我的错误是 -bash-4.0$ cat cat: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument 和我build立,glibc没有错误与以下configuration ../glibc/configure –prefix=/home/ex/uid377/glibbuilt 在旧版本,如2.14,运行的实用程序导致分段错误。 -bash-4.0$ ./pwd ./pwd: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./pwd) -bash-4.0$ LD_LIBRARY_PATH=/home/ex/uid377/glibc/lib/:${LD_LIBRARY_PATH} -bash-4.0$ ./pwd Segmentation fault (core dumped) 编辑内核版本 -bash-4.0$ uname -r 2.6.32.26-175.fc12.x86_64

unique_ptr编译错误

如果我告诉你我不能把它编译出来,我觉得这很尴尬。 你能帮我吗? #include<memory> using namespace std; int main() { std::unique_ptr<int> p1(new int(5)); return 0; } $ gcc main.cpp main.cpp: In function 'int main()': main.cpp:6:2: error: 'unique_ptr' was not declared in this scope main.cpp:6:13: error: expected primary-expression before 'int' main.cpp:6:13: error: expected ';' before 'int' $ gcc –version gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

什么是libg2c库?

我find了与“g2c”库链接的代码。 为什么我需要它? 只是想明白为什么它可能是重要的,它一般。 谢谢!

64位系统上的NULL定义问题

我使用gcc 4.1.2在RHEL 5.1 64位平台上运行。 我有一个实用的function: void str_concat(char *buff, int buffSize, …); 其中concat char *在可变参数列表(…)中传递,而最后一个参数应为NULL,以指定参数结束。 在64位系统上,NULL是8个字节。 现在的问题。 我的应用程序包括直接/间接2 stddef.h文件。 首先是/usr/include/linux/stddef.h ,它定义了NULL,如下所示: #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((void *)0) #endif 第二个是/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include/stddef.h #if defined (_STDDEF_H) || defined (__need_NULL) #undef NULL /* in case <stdio.h> has defined it. */ #ifdef __GNUG__ #define NULL __null […]