Questions tagged «gcc»

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

4
我不明白-Wl,-rpath -Wl,
为了方便起见,我在下面添加了相关的联机帮助页。 我的(误)理解是:如果需要用来分隔选项,,则意味着第二个-Wl不是另一个选项,因为它先,于该-rpath选项,这意味着它是该选项的参数。 我不明白怎么-rpath能有一个-Wl,.说法! 在我看来有意义的是: -Wl,-rpath . 这应该使用当前目录参数调用-rpath链接器选项。 man gcc: -Wl,选项 通过选项作为链接器的选项。如果option包含逗号,则会在逗号处将其拆分为多个选项。您可以使用此语法将参数传递给选项。例如,-Wl,-Map,output.map传递 -Map output.map给链接器。使用GNU链接器时,您也可以通过`-Wl,-Map = output.map'获得相同的效果。 人ld: -rpath = dir 将目录添加到运行时库搜索路径。在将ELF可执行文件与共享库链接时使用。所有-rpath参数都被串联并传递到运行时链接程序,该链接程序使用它们在运行时定位共享对象。在查找链接中显式包含的共享库所需的共享库时,也使用-rpath选项。
244 gcc  ld  rpath 

7
Clang vs GCC-产生更好的二进制文件?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 我目前正在使用GCC,但最近发现了Clang,并且正在考虑切换。但是,有一个决定性因素-它生成的二进制文件的质量(速度,内存占用量,可靠性)-如果gcc -O3可以生成运行速度快1%或占用内存减少1%的二进制文件,那么这是一个决定性的因素。 与GCC相比,Clang具有更好的编译速度和更低的编译时内存占用空间,但是我对生成的编译软件的基准测试/比较非常感兴趣-您能指出我的观点还是描述您的经验?

21
如何最好地使未使用变量的警告静音?
我有一个跨平台应用程序,在我的一些函数中,并没有使用传递给函数的所有值。因此,我从GCC收到警告,告诉我有未使用的变量。 围绕警告进行编码的最佳方法是什么? 函数周围的#ifdef? #ifdef _MSC_VER void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal qrLeft, qreal qrTop, qreal qrWidth, qreal qrHeight) #else void ProcessOps::sendToExternalApp(QString sAppName, QString sImagePath, qreal /*qrLeft*/, qreal /*qrTop*/, qreal /*qrWidth*/, qreal /*qrHeight*/) #endif { 这是如此丑陋,但似乎是编译器希望的方式。 还是在函数末尾给变量赋零?(我讨厌这是因为它正在更改程序流中的某些内容以使编译器警告静音)。 有没有正确的方法?
237 c++  gcc  warnings  gcc-warning 

1
启用C ++ 11时std :: vector性能回归
当启用C ++ 11时,我在一个小的C ++代码段中发现了有趣的性能下降: #include <vector> struct Item { int a; int b; }; int main() { const std::size_t num_items = 10000000; std::vector<Item> container; container.reserve(num_items); for (std::size_t i = 0; i < num_items; ++i) { container.push_back(Item()); } return 0; } 使用g ++(GCC)4.8.2 20131219(预发行版)和C ++ 03,我得到: milian:/tmp$ g++ -O3 main.cpp && …
235 c++  performance  gcc  c++11  vector 

13
从fgets()输入中删除结尾的换行符
我试图从用户那里获取一些数据,并将其发送到gcc中的另一个函数。代码是这样的。 printf("Enter your Name: "); if (!(fgets(Name, sizeof Name, stdin) != NULL)) { fprintf(stderr, "Error reading Name.\n"); exit(1); } 但是,我发现它最后有一个换行符\n。因此,如果我输入,John它将最终发送出去John\n。我该如何删除\n并发送正确的字符串。
235 c  string  gcc  newline  fgets 

13
适用于Windows的Objective-C
在Windows平台上编写Objective-C的最佳方法是什么? Cygwin和gcc?有什么方法可以将其集成到Visual Studio中吗? 沿着这些思路,关于如何链接和使用Windows SDK之类的东西,有任何建议。它是另一种野兽,但是我知道我可以在Windows DLL中编写汇编和链接,使我可以访问这些调用,但是我不知道如何在不进行谷歌搜索和获得零碎指导的情况下进行操作。 有没有人知道一个很好的在线或书籍资源来做或解释这些事情?

5
为什么GCC在实现整数除法时使用乘以奇数的乘法?
我一直在阅读div和mul汇编操作,我决定通过用C编写一个简单程序来看到它们的作用: 文件分割 #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } 然后使用以下命令生成汇编语言代码: gcc -S division.c -O0 -masm=intel 但是查看生成的division.s文件,它不包含任何div操作!取而代之的是,它执行某种带有移位和魔术数字的黑魔法。这是一个计算的代码片段i/5: mov rax, QWORD PTR [rbp-16] ; Move i (=9) to RAX movabs rdx, -3689348814741910323 ; Move some magic number to …


9
如何为几行代码禁用GCC警告
在Visual C ++中,可以使用#pragma warning (disable: ...)。我也发现在GCC中,您可以覆盖每个文件编译器的标志。我该如何针对“下一行”或使用GCC在代码区域周围使用push / pop语义呢?


6
typedef定长数组
我必须定义一个24位数据char[3]类型。我用来表示这种类型。我可以的typedef char[3]来type24?我在代码示例中尝试过。我放入typedef char[3] type24;了头文件。编译器没有对此抱怨。但是,当我void foo(type24 val) {}在C文件中定义一个函数时,它确实抱怨了。我希望能够定义类似type24_to_int32(type24 val)而不是的函数type24_to_int32(char value[3])。
210 c  arrays  gcc  typedef 

14
libpthread.so.0:添加符号时出错:命令行缺少DSO
编译openvswitch-1.5.0时,遇到以下编译错误: gcc -Wstrict-prototypes -Wall -Wno-sign-compare -Wpointer-arith -Wdeclaration-after-statement -Wformat-security -Wswitch-enum -Wunused-parameter -Wstrict-aliasing -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -Wno-override-init -g -O2 -export-dynamic ***-lpthread*** -o utilities/ovs-dpctl utilities/ovs-dpctl.o lib/libopenvswitch.a /home/jyyoo/src/dpdk/build/lib/librte_eal.a /home/jyyoo/src/dpdk/build/lib/libethdev.a /home/jyyoo/src/dpdk/build/lib/librte_cmdline.a /home/jyyoo/src/dpdk/build/lib/librte_hash.a /home/jyyoo/src/dpdk/build/lib/librte_lpm.a /home/jyyoo/src/dpdk/build/lib/librte_mbuf.a /home/jyyoo/src/dpdk/build/lib/librte_ring.a /home/jyyoo/src/dpdk/build/lib/librte_mempool.a /home/jyyoo/src/dpdk/build/lib/librte_malloc.a -lrt -lm /usr/bin/ld: /home/jyyoo/src/dpdk/build/lib/librte_eal.a(eal.o): undefined reference to symbol 'pthread_create@@GLIBC_2.2.5' /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing …

5
如何使用自制软件安装imagemagick?
我正在尝试在OSX Lion上安装Imagemagick,但某些功能无法正常工作。 -> brew install imagemagick /usr/local/git/bin/git ==> Cloning https://github.com/adamv/ImageMagick.git Cloning into /Users/klebershimabuku/Library/Caches/Homebrew/imagemagick--git... fatal: https://github.com/adamv/ImageMagick.git/info/refs not found: did you run git update-server-info on the server? Error: Failure while executing: git clone --depth 1 https://github.com/adamv/ImageMagick.git /Users/kleber/Library/Caches/Homebrew/imagemagick--git 酿造医生说: -> brew doctor We couldn't detect gcc 4.0.x. Some formulae require this compiler. Some …
201 git  gcc  homebrew  osx-lion  gcc4 

7
如何打开(字面上)所有GCC警告?
我真的要启用GCC的所有警告。(您会认为这很容易...) 您-Wall可能认为可以解决问题,但不能!还需要-Wextra。 您-Wextra可能认为可以解决问题,但不能!并非所有此处列出的警告(例如-Wshadow)都已启用。而且我仍然不知道这个清单是否全面。 我如何告诉GCC启用(如果不是,则不是,否则为!)所有警告?

3
未定义对'std :: cout'的引用
这是示例吗? #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } 它引发错误: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)' main.o: In function `__static_initialization_and_destruction_0(int,int)': main.cpp:(.text+0x3d): undefined reference …
193 c++  c++11  gcc  cout 

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.