Questions tagged «gcc»

GCC是GNU编译器集合。它是Linux上针对C,C ++,Go,Fortran和Ada的事实上的标准编译器,并且还支持许多其他语言和平台。除编译器外,GCC还具有一个工具链(libc,libstdc ++,objdump,nm等),该工具链已在多个平台和系统上广泛使用。

7
用gcc编译C ++程序
问题:如何使用gcc编译器编译C ++程序? info.c: #include<iostream> using std::cout; using std::endl; int main() { #ifdef __cplusplus cout << "C++ compiler in use and version is " << __cplusplus << endl; #endif cout <<"Version is " << __STDC_VERSION__ << endl; cout << "Hi" << __FILE__ << __LINE__ << endl; } 当我尝试编译时 info.c $ gcc …
84 c++  gcc  g++  gnu 

7
编译失败,“在创建共享库时,无法使用针对.rodata.str1.8的重定位R_X86_64_32”
我正在尝试从VPS中的makefile编译此源代码,但无法正常工作。VPS是64美分的操作系统 这是完整的错误 # make gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c g++ -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/*.cpp g++ -c -O3 -w -DLINUX -I../SDK/amx/ *.cpp g++ -O2 -fshort-wchar -shared -o "TCP_V1.so" *.o /usr/bin/ld: TCP-LINUX_V1.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC …

15
C的推荐gcc警告选项[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 除了-Wall以外,人们发现其他哪些警告有用? http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
83 c  gcc  compiler-errors 


5
斯坦福大学教程与GCC之间的冲突
根据这部电影(大约38分钟),如果我有两个具有相同局部变量的函数,则它们将使用相同的空间。因此,以下程序应打印5。编译gcc结果-1218960859。为什么? 该程序: #include <stdio.h> void A() { int a; printf("%i",a); } void B() { int a; a = 5; } int main() { B(); A(); return 0; } 根据要求,这是反汇编程序的输出: 0804840c <A>: 804840c: 55 push ebp 804840d: 89 e5 mov ebp,esp 804840f: 83 ec 28 sub esp,0x28 8048412: 8b 45 f4 …


14
therubyracer-Gem :: Ext :: BuildError:错误:无法构建gem本机扩展
我正在尝试在Mavericks上安装以下gem版本 libv8(3.16.14.3) therubyracer(0.12.1) 显然,therubyracer宝石依赖于libv8。 1)安装libv8 什么是libv8?我的研究似乎表明它是Google Chrome使用的某种javascript库? 我在安装它时遇到了麻烦,但是这篇出色的文章既包含了我的错误,也提供了关于如何绕过它的解释清楚的答案。 所以我安装libv8了 gem install libv8 -- --with-system-v8 据我了解,这安装了gem,但是使用了v8库的本地系统安装,而不是... gem随附的版本?无论哪种方式,它都是成功的。 2)安装rubyracer 在下一步中,我无法安装therubyracergem。我不太确定这个gem的功能,只是我要尝试的Rails项目的依赖项bundle install。 它给了我以下错误: Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb checking for main() in -lpthread... yes checking for main() in -lobjc... yes checking for v8.h... no *** extconf.rb failed *** …

3
为什么GCC垫可与NOP一起使用?
我已经使用C了很短的时间,最近才开始涉足ASM。当我编译程序时: int main(void) { int a = 0; a += 1; return 0; } objdump反汇编具有代码,但在重新输入后会提示: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov %esp,%ebp 8048397: 83 ec 10 sub $0x10,%esp 804839a: c7 45 fc 00 00 00 00 movl $0x0,-0x4(%ebp) 80483a1: 83 45 fc 01 addl $0x1,-0x4(%ebp) …
80 c  gcc  assembly 


2
试图了解gcc选项-fomit-frame-pointer
我要求Google给我gccoption的含义,该选项-fomit-frame-pointer将我重定向到以下语句。 -fomit-frame-pointer 不要将帧指针保存在不需要一个的寄存器中。这避免了保存,设置和恢复帧指针的指令。它还使许多功能中都有一个额外的寄存器。这也使得在某些机器上无法进行调试。 据我对每个功能的了解,将在过程存储器的堆栈中创建一个激活记录,以保留所有局部变量和更多信息。我希望该帧指针表示功能激活记录的地址。 在这种情况下,什么类型的函数不需要将帧指针保留在寄存器中?如果获得此信息,我将尝试基于此设计新功能(如果可能),因为如果帧指针未保存在寄存器中,则某些指令将以二进制形式省略。在具有许多功能的应用程序中,这确实可以显着提高性能。

4
与依赖项链接动态库
请考虑以下情形: 共享库libA.so,没有依赖项。 共享库libB.so,依赖项为libA.so。 我想编译一个与libB链接的二进制文件。我应该仅将二进制文件与libB链接,还是与libA链接? 有什么方法只能与直接依赖项链接,从而使依赖项中的未解析符号解析为运行时吗? 我担心库libB的实现将来可能会改变,引入了其他依赖项(例如libC,libD,libE)。我会遇到问题吗? 换一种说法: libA文件:a.cpp啊 libB文件:b.cpp bh 主程序文件:main.cpp 当然,b.cpp包含ah,main.cpp包含bh 编译命令: g++ -fPIC a.cpp -c g++ -shared -o libA.so a.o g++ -fPIC b.cpp -c -I. g++ -shared -o libB.so b.o -L. -lA 我应该使用哪个波纹管选项? g++ main.cpp -o main -I. -L. -lB 要么 g++ main.cpp -o main -I. -L. -lB …
79 gcc  dll  dependencies  g++ 

5
为什么编译器会抛出此警告:“缺少初始化器”?结构没有初始化吗?
我正在为程序创建某种前端。要启动该程序,我使用调用CreateProcess(),它除其他外还接收指向STARTUPINFO结构的指针。要初始化我曾经做过的结构: STARTUPINFO startupInfo = {0}; // Or even '\0'. startupInfo.cb = sizeof(startupInfo); 当使用启用了这些警告的GCC编译程序时,-Wall -Wextra它向我发出警告,指出缺少指向第一行的初始化程序。 warning: missing initializer warning: (near initialization for 'startupInfo.lpReserved') 所以我最终做了: STARTUPINFO startupInfo; memset(&startupInfo, 0, sizeof(startupInfo)); startupInfo.cb = sizeof(startupInfo); 这样,编译器就不会发出任何警告。问题是,这些初始化结构的方式之间有什么区别?使用第一种方法,是否不初始化结构?您会推荐哪一个?
79 c  winapi  gcc 

8
未定义对静态const int的引用
我今天遇到了一个有趣的问题。考虑以下简单示例: template <typename T> void foo(const T & a) { /* code */ } // This would also fail // void foo(const int & a) { /* code */ } class Bar { public: static const int kConst = 1; void func() { foo(kConst); // This is the important line …
79 c++  gcc 


2
在C中不使用main()编译并运行程序
我正在尝试编译和运行以下没有main()功能的程序C。我已经使用以下命令编译了程序。 gcc -nostartfiles nomain.c 编译器发出警告 /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340 好,没问题 然后,我运行了可执行文件(a.out),两个printf语句都成功打印,然后出现分段错误。 因此,我的问题是,为什么成功执行打印语句后出现分段错误? 我的代码: #include <stdio.h> void nomain() { printf("Hello World...\n"); printf("Successfully run without main...\n"); } 输出: Hello World... Successfully run without main... Segmentation fault (core dumped) 注意: 在这里,-nostartfilesgcc标志可防止编译器在链接时使用标准启动文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.