我正在阅读gcc手册,尤其是关于警告/错误标志的部分。在阅读了关于-Wextra标志的部分之后,我想知道它是否有用。它似乎在抱怨那些似乎相当主观的事情,或者说是一种品味问题。我对gcc没有太多的经验,我只是在大学的一些小项目中不时使用它,所以对于所有有经验的C/C++(或者对于使用gcc的任何语言),Wextra是怎么回事?,以及其他东西意味着:
如果比较始终为true或true,则发出警告
由于范围有限,始终为false
数据类型的,但不警告
常量表达式。例如
如果未使用无符号变量,则发出警告
这听起来可能很基本/幼稚。。但是我已经很久没有接触C/C++了,对此我感到很失落
我正忙于开始opinionfinder,这要求我获得SUNDANCE 4.3.7。事实证明,要编译圣丹斯比我想象的要付出更大的努力
按照说明,我启动了install_sundace脚本,但出现了此错误。。。看来我的编译环境没有被正确检测到
我已经尝试过的几件事-
install_sundance脚本使用c-shell。作为一项测试,我安装了C shell,并试图看看我的C编译环境是否仍然良好。那很好
我试着编写一个
我需要将库(portaudio)链接为静态库。当我做以下事情时
arm-none-linux-gnueabi-gcc -static -L/media/Data/lib/.libs -lportaudio prova.cpp
他没告诉我
/tmp/ccuoQi1J.o: In function `main':
prova.cpp:(.text+0x190): undefined reference to `Pa_Initialize'
prova.cpp:(.text+0x1bc): unde
标签: Gcc
incrementdecrement
//请告诉我这个片段的执行情况。。。
//我正在使用GCC ubuntu(12.04)编译器-_- 我生成了汇编代码(适用于windows 7上的windows的gcc)[gcc-S test.c],并得到以下结果:
#include<stdio.h>
int main()
{
int a=2;
int j=++a + ++a + ++a + ++a ;
printf("%d",j);
}
计算结果(请参见注释)后,调用printf函数,结果为19
我想不包括三行代码,如果编译后的某个日期。
原因是它们提供了向后兼容性。为了支持客户端和嵌入之间的交错发布,现在就需要它
一旦出现下一个软件版本,将放弃此支持,以迫使客户升级嵌入式软件。由于这是几个月后,有风险的这些线路被遗忘
所以理想情况下我想要一个
#if __DATE__ > MyDate
code here
#endif
或者类似的东西。
有没有办法做到这一点
*代码是用GCC编译的不幸的是,这不起作用,因为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu生
我正在尝试编译一个使用zeromq的程序。makefile的这一部分引用了zeromq库
LIBS=-lzmq -ldl -lsqlite3 $(OPTLIBS)
我在ubuntu上,库(libzmq.so)位于/usr/local/lib中。我不明白lzmq指的是什么。图书馆在什么地方登记了吗?如何定义lzmq所指的路径 选项-lzmq是一个链接器标志-l,后跟一个参数zmq。链接器标志-l告诉链接器链接库zmq。链接器将在不同的目录中查找具有该名称的具有不同形式的库。例如,在典型的POSI
如何使用gdb调试GCC(cc1)中的特定过程
我想调试gcc中的“隔离路径”传递。我有一个gcc工具链内置选项,带有“-O0-g3”
我应该把断点放在哪里?如果是函数名,我们应该在哪里查找名称?这取决于您正在调试的gcc版本。在最新版本中,pass是某个基类的子类,您可以在特定的虚拟方法上设置断点。在旧版本中,它是类似的,但是IIRC是一个函数指针,而不是一个真正的方法。我建议搜索“隔离路径”,然后读取该文件
我有一些文件,如:
a.c a.h
b.c b.h
c.c c.h
d.c d.h
其中a使用b,b使用c,c使用d
在编译时,是否有一种方法可以将a直接链接到b,而不是将它们全部包含在编译语句中
以某种方式使用:
gcc a.o b.o
而不是:
gcc a.o b.o c.o d.o
我想这样做,这样a就不必担心b、c或d是否使用任何其他文件实现,而是可以直接指向b.o
附带的问题是,有没有一种方法也可以执行一个通配符对象命令,像这样的命令也会递归地进入文件:
gcc *.o
我很好
我跑
我明白了
你怎样才能赢得比赛?
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
请注意参数“-”,意思是“不要将下面的任何内容视为选项”
此外,如果您接受错误消息中的建议来运行“grep--help”,它会显示您还可以使用-e/--regexp选项显式设置模式
man gcc | grep -- "-L"
正如其他人所说,grep(和许多其他gnu命令)有一个“-”选项,
我有点AIX新手。我正在尝试使用gcc的堆栈保护器功能编译一个程序。我使用pware的gcc包在服务器上安装了gcc,我可以编译如下示例程序:
#include <stdio.h>
int main(int argc,char **argv)
{
printf("hello world\n");
return 0;
}
我在系统上找不到libssp_nonshared.a-是否需要安装其他软件包,或者是否应该随gcc软件包一起安装?这与libc无关:您的gcc安装缺少l
我试图理解gcc交叉编译器背后的命名约定,但似乎有相互矛盾的答案。我的系统中有以下三个交叉编译器:
arm none linux gnueabi(用于linux的CodeSourcery arm编译器)
arm none eabi(用于裸机系统的CodeSourcery arm编译器)
arm eabi(安卓arm编译器)
在阅读GNU libtool手册时,它将交叉编译器命名约定指定为:
cpu供应商操作系统(操作系统=系统/内核系统)
对于我的系统中的编译器来说,这似乎并不完全准确。GN
我还是一个在ubuntu中安装软件包的学习者。事实上,我在一年多前从一个torrent中复制了ubuntu的iso映像文件,我在Windows机器上使用Oracle Virtual Box运行,主要是用g++进行编译
当时我已经安装了GCC4.4.1。现在是gcc-4.6-20110610.tar.bz2。我不知道我的4.4.1包存储在哪里,但我正在本地文件夹中存储的4.6包。我的问题是:
1我的4.4软件包是否会受到此新安装的影响
2是否有一种方法可以在两种编译之间切换,无论何时我想说gcc-
我目前正在使用为PowerPC440编译的GCC4.5.3,并且正在编译一些不需要libc的代码。我没有任何对memcpy()的直接调用,但编译器似乎在构建过程中插入了一个
有一些链接器选项,如-nostdlib、-nostartfiles、-nodefaultlibs,但我无法使用它们,因为我没有进行链接阶段。我只是在编译。比如说:
$ powerpc-440-eabi-gcc -O2 -g -c -o output.o input.c
如果我用nm检查输出.o,我会看到对memcpy的引用
在VisualStudio中,我可以在代码中使用unicode符号,如“π”和“²”。Visual Studio始终将源文件保存为带有BOM(字节顺序标记)的UTF-8
例如:
// A = π.r²
double π = 3.14;
只有在我首先删除BOM表时,GCC才会编译这些文件。如果不删除BOM表,会出现如下错误:
wwga_hydutils.cpp:28:9:错误:程序中出现错误'\317'
wwga_hydutils.cpp:28:9:错误:程序中出现错误'\200'
这就引出了一
在Ubuntu11.10下编译GCC4.6.2有一个问题。
该错误非常常见,即/usr/bin/ld:找不到crti.o:没有这样的文件或目录
我尝试在链接器可以找到crti.o的位置创建LIBRARY_PATH=/usr/lib/x86_64-linux-gnu,但配置抱怨在构建gcc时LIBRARY_PATH不应包含当前目录的路径
checking LIBRARY_PATH variable... contains current directory
configure: error:
*
使用gcc(可能还有其他编译器),可以在源文件之外定义宏,如下所示:
c:\MinGW\bin\gcc.exe -DDEFINED_INT=45 foo.c -o foo.exe
这将把DEFINED\u INT定义为45,这在编译时可以看到
#include <stdio.h>
int main() {
printf("The define was: %d\n", DEFINED_INT);
return 0;
}
汇编如下:
c:\MinGW\bin\gcc.ex
在CentOS 5.1 g++4.1.2、4.6.3和4.7.0下进行测试,结果都相同。我如何解决这个问题?基本上,我不能用调试构建来构建llvm
[hidden]$ cat x.cpp
#include <iostream>
int main() {
}
[hidden]$ g++ -c -fPIC -g x.cpp
[hidden]$ objdump -r x.o | grep R_X86_64_32 | head -10
000000000000001c R_X86_64
我想在一些优化问题中使用intel mkl,所以我使用intel示例来测试它。
test.cpp:
#include <mkl.h>
#include <stdio.h>
typedef struct {
double re;
double im;
} complex16;
extern "C" void cblas_zdotc_sub(int, const void*, int, const vo
我为一个没有FPU的嵌入式系统开发软件。我希望能够在我的桌面上用软件浮点库构建这个软件,以便获得更真实的性能视图。有人对如何实现这一目标有什么想法吗
到目前为止,我还没有在gcc中使用-msoft float方面取得多大进展。我目前正在考虑使用叮当声。通过使用标志-Xclang-msoft float-Xclang-no implicit float,并指定一个包含软浮点例程实现的库,我能够编译我的应用程序。当我试着运行它时,它总是会出错。据我所知,这是因为这个程序所依赖的库不是用软浮点编译的。
标签: Gcc
startupelflinker-scriptsnewlib
我从中查看了uu libc_init_数组的源代码。
但我不太明白这个函数的作用
我知道这些符号
/* These magic symbols are provided by the linker. */
extern void (*__preinit_array_start []) (void) __attribute__((weak));
extern void (*__preinit_array_end []) (void) __attribute__((weak));
extern v
我编写了一个编译多个文件的makefile。执行这样的行时:
g++ -c -Wall -U DEBUG -U FILE -U HighPriority -U OnlyCUDA -U CUDA -U THREAD_NUM -U SIZE -U InputFileName -D FILE -D SIZE=32 -D THREAD_NUM=4 -D CUDA -D InputFileName=input/In32.txt ../src/lib/Globals.cpp -o Globals.o
它
我注意到OSX雪豹上的gcc不支持-march=native。我可以在配置脚本中输入什么命令来检测该选项是否可用?以下命令似乎有效:
echo "" | gcc -fsyntax-only -march=native -xc -
尝试用-march=native编译hello world并分析gcc的退出代码?类似于:echo'int main(){return 0;}>test.c&&gcc-march=native-o test.c,然后抓取$?创建一个var并使用它。@maverik。嗯
我通过键入gcc-target help命令获得gcc-march的帮助:
我试图设置-march=i686+nommx和-march=i686,+nommx,但不正确!gcc报告的错误:错误:错误值i686,+nommx代表-march=开关
我想在没有mmx目标的情况下将我的程序构建到i686,如何设置-march选项?i686不在您提供的列表中,因此出于好奇,如果您使用明确列出的内容会发生什么情况?您的gcc版本是什么?我已经解决了这个问题。它应该通过使用-Wa,-march=i686+n
我尝试打包我的应用程序并静态链接所有库。但是我得到了这个错误。Makefile如下所示:
CC = gcc
INCPATH = -I/home/johnny/Application/FileBasedReG/include/RealityGrid
LIBS = -L/home/johnny/Application/FileBasedReG/lib/RealityGrid -lReG_Steer -l:libxml2.a -l:libncurses.a -l
我编写了一个简单的32位汇编代码:
movl $0x542412e6, %eax
movl %ebp , %edx
addl $0x30, %edx
movl %edx, %ebp
pushl 0x08048dd6
ret
运行此命令时:
gcc -m32 -c e.s
我得到以下18个字节:
0: b8 e6 12 24 54 mov $0x542412e6,%eax
5: 89 ea mov %ebp,%edx
我需要使用相同的语法实现2遍编译器。第一遍只使用很少的规则。第二遍使用完整的语法。我正在寻找在每次传递中使用哪些规则的标记,比如ifdef ifndef(没有额外的“噪音规则”)
有没有一个简单的方法
第二个问题;是否有办法“捕获”EOF并在文件末尾具有“备用”状态,以便下一个文件(下一个pANTLR3_输入_流)平滑地延续上一个文件
实施它的最佳方式是什么
谢谢您可以使用语义谓词来允许解析器遵循以下特定路径:
remove_partitioning:
{SERVER_VERSION &
标签: Gcc
configuremingw-w64
我正在尝试配置Mingw64(mingw-w64-v3.1.0.tar.bz2)
我运行了/configure,收到了以下消息
configure: Configuration Options Summary:
configure:
configure: WinCE runtime........: no
configure: Win32 runtime........: yes
configure: Win64 runtime........: no
配置本身很好。我能够安装它
我在raspberry pi上预先配置了linux发行版(用于比特币矿工)。
问题是这个发行版非常小,只有用于基本命令的busybox。它没有包管理器,甚至没有gcc编译器。所以我的目标是在它上面安装一个gcc编译器,这样我就可以进一步安装其他软件
因此,我基本上仅限于来自busybox的以下命令:
root@raspberrypi:~# ls /bin
addgroup fgrep ping6
adduser gr
我有点被gcc的最新版本弄糊涂了。编译了一段简单的代码:
int main()
{
char buffer[1];
scanf("%s",buffer);
printf("You Entered %s\n", buffer );
return 0;
}
当我拆卸func时,我发现:
(gdb) disas main
Dump of assembler code for function main:
0x0804846d <+0>: push
我在fortran程序下工作,遇到了if语句的奇怪行为
我的模块与主程序位于同一文件中:
module platform
character (*) SLASH, NULLDEV, COPY_CMD, MKDIR_CMD
parameter (SLASH="\", COPY_CMD="cp -r ", NULLDEV="nul", MKDIR_CMD="mkdir")
!parameter (SLASH="/", COPY_CMD="cp ", NULLDEV="
我试图在我的“SunOS sun4v 5.10”系统上编译Csmith,但我遇到了如下错误:
platform.cpp: In function 'long unsigned int platform_gen_seed()':
platform.cpp:78: error: impossible constraint in 'asm'
谁能告诉我哪里出了错
#if (TARGET_CPU_powerpc == 1 || TARGET_CPU_powerpc64 == 1)
/*For PPC,
即使未找到libthrift,以下链接也会成功:
$ g++ --std=c++11 ../gen-cpp/SharedService.cpp ../gen-cpp/shared_types.cpp ../gen-cpp/tutorial_types.cpp ../gen-cpp/Calculator.cpp ./client.cpp -lthrift
$ ldd ./a.out
linux-vdso.so.1 => (0x00007ffd35dfe000)
libthr
我正在使用以下/configure命令构建GCC 5.2.0交叉编译器:
/gcc-5.2.0/C++——前缀=/Ur-构建= x86y64-ununn-Linux uN-GUU---主机= x86y64-unNeN-LIUX-GNU--目标= x86y64-MyoS- LIUX-GNU--禁用NLS——启用语言= C,C++ +带有SysRooSt/MyOS——用本机系统头DIR=/包含 < /P>
因此,构建平台和主机平台都是x86\u 64-unknown-linux-gnu,目标平台
标签: Gcc
atmegaavr-gccatmelatmelstudio
这是我的设置:
Atmel studio 7.0
avr-gcc
ATmega644PA
我正在尝试将默认值写入eeprom。我的意思是:在代码中,eeprom中特定位置的预定义值
我可以使用:
__attribute__((section(".eeprom")))
它可以将变量放入eeprom,但这会将变量自动链接到一个位置。
我想手动设置变量的存储位置。我该怎么做
谢谢
Ps:这需要对>300个变量起作用您可以将所有变量放在一个结构中。变量将按指定顺序放入EEPROM中
struct {
假设我有一个golang包,其中包含一些汇编代码:
demopkg/
source1.go
source2.go
asm_amd64.s
如果我尝试使用go build构建它,工具链将使用go tool asm来组装*.s文件
但是如果我将Cgo添加到混合中,通过将单个import“C”放入任何源代码中,go将切换到gcc汇编程序
我可以通过执行go build-n来查看它。第一个案例中对/usr/local/go/pkg/tool/linux\u amd64/asm的调用
可以通过GCC--help=optimizers获得GCC/G++中可用的优化器列表。合法值和参数范围也在params.def中定义。
是否有这样的命令和params.def文件也可用于clang?1-对于clang使用:
clang -OX -mllvm -debug-pass=Arguments foo.c
llvm-as < /dev/null | opt -OX -disable-output -debug-pass=Arguments
或
其中,X可以是Os、O1、O2、O3
我需要一些关于在MinGW下使用GCC编译的帮助
假设我有两个文件:
a、 c包含两个函数a1和a2
b、 c包含两个函数b1和b2
然后我将这两个对象链接到一个共享库中。使用的命令如下所示:
gcc -c a.c
gcc -c b.c
gcc -shared -Wl, --version-script v.ver -Wl, -Map=out.map -Wl, --strip-all -o mydll.dll a.o b.o
v、 它看起来像:
mylib {
global: a1;
我们遇到了一款奇怪的设备,名为Motorla RAZR i,拥有x86 CPU和安卓4.1.2版(大约2013年)
本机代码中的GL操作有时会导致此设备崩溃。我们最终将此错误减少为几行无辜的函数调用:
void stackCorrupt() {
const EGLint configAttrs[] = {EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_NONE};
const EGLint contextAttrs[] = {EGL_CONTEX
让我解释一下情况
使用系统G++(Linux下)编译C++库。
然后构建了一个cython模块,该模块调用预编译库中的函数。cython模块的构建是在anaconada venv下完成的(但venv内没有安装g++。因此cython必须使用系统gcc/g++)。
现在,在相同的anaconda venv下,导入cython模块会导致以下错误:
anaconda3/envs/hspy/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (r
为什么GCC编译器会将常量变量0xfffffbd1识别为无符号int,因为条件ret==0xfffffbd1C标准规定,整型常量的类型是可以表示其值的对应列表的第一个(C99第6.4.4.1/5段),对于没有后缀的十六进制类型,名单如下:
int
unsigned int
long int
unsigned long int
long-long-int
无符号长整型
假设一个32位的int类型,0xfffffbd1大于int\u MAX,但小于UINT\u MAX,因此常量的类型是无符号in
我想要eflags值,但我得到了错误
operand type mismatch for `mov'
这是我的密码:
int a0 = 0, b0 = 1; short c0;
// asm("cmp %1, %2\npushf\npop ax\nmov ax, $0": "=r" (c0): "r" (a0), "r" (b0));
asm("cmp %1, %2\n lahf\n mov %%ax, $0": "=r" (c0): "r" (a0), "r" (b0): "ax");
我想在一个名为.xip.text的特定部分中放置一些函数,
但只读数据不能放入该部分
以下是我的测试代码:
#include <stdio.h>
void foo(void) __attribute__((section (".xip.text")));
void foo(void)
{
printf("hello world\n");
}
链接后,函数文本被放置在.xip部分,但字符串
hello world\n不在同一节中。如何解决
我可以把整个文件放在.xip部分
我需要在Ubuntu 16上构建一些旧的gcc版本。主要目标是4.6.3,但我似乎有一个包含搜索列表的问题。
使用此编译器的生成失败,因为找不到sys/cdefs.h。我已检查编译器的包含搜索路径:
$ gcc -xc -E -v -
<…stripped…>
#include <...> search starts here:
<company specific path>/include
/usr/local/include
<company spe
标签: Gcc
undefined-symbollibssh
我正试图从Wil Allsopp的笔测试书中构建一个简单的SSH客户端。在Mac OS High Sierra上使用gcc-4.2,并使用自制程序安装libssh。最简单的代码版本是:
#include <libssh/libssh.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
ssh_session my_ssh_session;
my_ssh_session = ssh
标签: Gcc
compiler-optimizationssememory-alignment
我使用\uuu int128作为结构的成员。
它与-O0(无优化)一起工作
但是,如果启用优化(-O1),则会因段故障而崩溃
它在指令movdqa处崩溃,该指令需要var按16对齐。
而地址是由malloc()分配的,它只按8对齐
我试图通过-mno SSE禁用SSE优化,但未能编译:
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:27:1: error: SSE register return with SSE disabled
那么,如
我正在使用GCC编译器。我想在C中插入一些内联指令。使用\uu asm\uu指令成功插入非分支指令,如下所示:
__asm__ volatile (
"add %[my_out], %[my_op1], %[my_op2]\n"
: [my_out] "=&r" (array[3])
: [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
);
但是我不能插入
对于我的一个二进制文件,CMake生成如下所示的cmdline:
/opt/rh/devtoolset-8/root/usr/bin/g++
-O3 -DNDEBUG
-s
-Wl,--as-needed
-Wl,--gc-sections
<blah-blah>.o
...
-o procmon.e
-Wl,-rpath,/usr/local/lib64
<my lib>.a
...
/usr/local/lib64/libxalan-c.so
/u
我有两个变量来模拟X86 XMM&YMM,如下所示:
uint64_t xmm_value[2];
uint64_t ymm_value[4];
现在我想使用内联汇编来读写XMM/YMM寄存器
如何编写GCC内联程序集以将xmm_值复制到寄存器XMM0
如何编写GCC内联程序集,将寄存器YMM0复制到ymm_值
我已经尝试搜索执行此操作的示例内联程序集,但找不到任何好的答案。谢谢
因此,在一些帮助下,我编写了这段代码,它编译得很好。我对XMM使用movups,对YMM使用vmovups,
标签: Gcc
shared-librariesdynamic-linkingmissing-symbols
在我从源代码Nix 2.3 FWIW构建的项目中,一个共享库libnixstore.so与另一个共享库libnixutil.so链接。此操作的命令行是:
x86_64-slackware-linux-g++ -std=c++17 -o /d/tmp/SBo/nix-2.3/src/libstore/libnixstore.so -shared -L/usr/lib64 -Wl,--no-copy-dt-needed-entries src/libstore/binary-cache-store.
c代码使用的函数“tfm_hello_world_Moin”包含在“libtfm_s_Moin.a”中,链接失败:
arm none eabi/bin/ld:build/main_blinky.o:in functionhello_world:main_blinky.c:(.text+0xcc):对tfm_hello_world_单板的未定义引用
collect2:错误:ld返回了1个退出状态
链接:
更改为绝对路径后,可以:
OBJ_FILES += ~/code/tfm/trusted-fi
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 163 页