其他开发 为什么GCC 6假定数据是16字节对齐的?

(对不起,未能将我的问题简化为一个简单的失败的测试用例...) 我在升级到GCC 6.3.0来构建代码库时遇到了问题(相关标志: -O3 -m32 ). 具体地说,由于GCC优化,我的应用程序在struct ctor调用中出现段错误. 在此ctor中,GCC使用了 movaps : 移动%xmm0,0x30a0(%ebx) movaps 需要操作数 16字节对齐.但是在此时

0 2021-05-09 IT屋

其他开发 共享库中的符号查找

我已经在下面测试了这样一个简单的程序 /*共享库*/dispatch_write_hello(无效){fprintf(stderr,"hello \ n");}外部虚空print_hello(无效){dispatch_write_hello();} 我的主程序是这样的: 外部无效dispatch_write_hello(无效){fprintf(stderr,"overridden \ n"

0 2021-05-09 IT屋

其他开发 gcc引发“无法识别的命令行选项"pkg-config错误

我正在尝试使用此处的教程来编译gtk程序.当我发出命令时 gcc -o tut tut.c $(pkg-config --cflags --libs gtk + -2.0 gmodule-2.0) 我收到以下错误: gcc:错误:无法识别的命令行选项'-pthread -I/usr/include/gtk-2.0-I/usr/lib/x86_64-linux-gnu/gtk-2.0/i

0 2021-05-09 IT屋

其他开发 使用系统时间更改的wait_until的condition_variable变通办法

我有一个使用 std :: condition_variable wait_until 的计时器类(我也尝试过 wait_for ).我正在使用 std :: chrono :: steady_clock时间等到将来的特定时间. 这本来是单调的,但是一直存在一个长期存在的问题,即它实际上使用系统时钟,并且在更改系统时间时无法正常工作. 它已在libc中按以下建议进行了修复: https

0 2021-05-09 IT屋

其他开发 如何为WSL(Linux的Windows子系统)安装GCC和GDB?

我需要gcc来编译C代码,并且无法在wsl上安装gcc.我尝试了 sudo apt-get install gcc ,但是它不起作用.这是错误. hack @ DESKTOP-VMQA3JB:〜$ sudo apt-get安装gcc正在阅读包裹清单...完成建立依赖树正在读取状态信息...完成某些软件包无法安装.这可能意味着您有请求一个不可能的情况,或者如果您使用的是不稳定的情况分发一些尚未创

0 2021-05-09 IT屋

其他开发 MinGW的ld无法在非PE输出文件上执行PE操作

我知道还有其他类似的问题,无论是否为StackOverflow.我为此做了很多研究,但仍然没有找到一个解决方案.我正在做一个作为副项目的操作系统.我已经在Assembly中完成了所有工作,但是现在我想加入C代码.为了进行测试,我制作了以下汇编代码文件(称为test.asm): [BITS 32]全球_a第.text节_一种:jmp $ 然后我制作了这个C文件(称为main.c): ex

0 2021-05-09 IT屋

其他开发 gcc -save-temps:如何指定目录

是否可以指定 -save-temps 工件? 我知道以后我可以做 mv ,但是想知道是否有一种避免多余步骤的方法. 解决方案 您可以指定 -save-temps 工件将通过以下任一方式保存在编译的当前目录中:- -save-temps-save-temps = cwd 或者您可以指定它们将与相应的 .o 文件保存在同一目录中,前提是还使用了 -o 选项, -save-te

0 2021-05-09 IT屋

其他开发 确保功能参数的静态存储

我们有这个函数原型: BNode * b_new_node(const char * name,int pos,int len,const char * val); 使用此代码(和类似代码)的大多数代码都是自动生成的代码,如下所示: b = b_new_node("foo.bar.id.1",0,10,some_data); 该函数分配一个新的BNode并将 val 字符串复制到其

0 2021-05-09 IT屋

其他开发 为什么在使用线程编译C代码时编写-D_REENTRANT

当我们编译一个在其中实现了线程的C程序时,我们会写此语句.我不明白为什么我们在这里使用-D_REENTRANT.例如 gcc t1.c -lpthread -D_REENTRANT 解决方案 您不必编写它.但这是推荐的. 定义_REENTRANT 使编译器使用C库中多个函数的线程安全(即可重入)版本.

0 2021-05-09 IT屋