Articles of gcc

进程间信号量有时不像预期的那样工作

我有以下C代码,其中以sm为前缀的variables由两个进程proc1和proc2共享。 因此信号量也是共享的。 这个代码被重复调用。 所以如果我说以前的价值,这意味着以前的迭代的价值。 我注意到在我的程序中, proc1有时会传递sem_wait(sem_f2l)而没有proc2执行sem_post(sem_f2l) 。 这我注意到,因为sm_value_proc1和sm_value_proc2应该在我的程序中具有相同的值,这也是由printfs用>>>确认的。 但是,使用<<<的printf有时会显示不同的值。 不同之处在于proc1打印了以前的sm_value_proc2值,因为proc1神秘地不会等待proc2发布sm_f2l 。 任何想法这里怎么了? // semaphores are initialized like this -> sem_init( sm_l2f, 1, 0 ); // Note that sm_l2f and sm_f2l are pointers to sem_t // sm_condition is assigned here by proc1 if ( is_proc1 ) { sem_post( sm_l2f ); // proc2_value should be updated by […]

在Linux上的C ++源文件上运行“gcc”会导致“cc1plus:内存不足……”错误消息

在Ubuntu上使用“gcc”编译C ++源文件时遇到了一个令人困惑的问题。 解决了这个问题之后,我想在这里发表,以解救别人头痛的问题。 为了这个报告,我们有最简单的C ++“Hello,World”程序,存储在main.cpp中: #include <stdio.h> int main (int argc, char *argv[]) { return 0; } 当我运行命令: gcc main.cpp 我收到错误消息: cc1plus: out of memory allocating 1677721600 bytes after a total of 475136 bytes 我证实我正在编译正确的比特(即32位)。 我做错了什么?

/usr/../libstdc++.so.6:未find版本'GLIBCXX_3.4.11'(必需)

我一直被困在这个问题上好几个星期,一直在互联网上寻找解决scheme,但目前为止不太好… 所以我有一个由别人编写的程序,我尝试在Matlab中编译,使其工作。 我的电脑是红帽企业Linux工作站(64位),安装了gcc 4.4.3和Matlab 2011b。 gcc与我的Matlab兼容( http://www.mathworks.com/support/compilers/R2011b/glnxa64.html )。 编译工作正常(我的意思是,没有错误信息发生在Matlab命令窗口)。 但编译之后,每当我使用编译的特定函数(称为“mexLasso”)时,都会显示如下错误: ***无效的MEX文件“/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64”:/usr/local/matlab_R2011b/bin/glnxa64/../../sys/os/glnxa64 /libstdc++.so.6:版本'GLIBCXX_3.4.11'找不到(需要/usr/local/matlab_R2011b/toolbox/spams-matlab/build/mexLasso.mexa64) testing错误(第24行)alpha = mexLasso(X,D,param); * 所以我在terminalinput“strings /usr/lib/libstdc++.so.6 | grep GLIBC”,我发现其中实际上是“GLIBCXX_3.4.11”。 我一直在使用Linux和gcc的东西只有几个月…所以还是有很多东西我不明白。 如果你能详细解释,这将是非常有帮助的。 谢谢!! %%更多详细信息:我从http://spams-devel.gforge.inria.fr/downloads.html获得了有关机器学习的这些程序。 奇怪的是,编译后,该包中的其他function工作正常(如“mexTrainDL”)。

有什么方法可以将我的程序与Wine编译的部分联系起来吗?

我正在尝试在Linux中使用Windows DLLfunction。 我目前的解决scheme是一个单独的葡萄酒应用程序的编译,它使用DLL和IPC和主应用程序之间的传输请求/响应。 这工作,但是是一个真正的开销比较简单的dll调用。 我看到,wine编译的程序通常是一个bootstrapping脚本和一些.so,其中(根据文件实用程序)是正常的linuxdynamic链接库。 有什么办法可以将.so直接链接到我的应用程序? 有没有手册?

arm-linux-gnu-gcc致命错误:stdio.h:没有这样的文件或目录

这些是/ usr / bin中的文件 [root@xilinx bin]# ls -ld arm* -rwxr-xr-x. 1 root root 691752 Feb 5 2013 arm-linux-gnu-addr2line -rwxr-xr-x. 1 root root 721416 Feb 5 2013 arm-linux-gnu-ar -rwxr-xr-x. 1 root root 1297632 Feb 5 2013 arm-linux-gnu-as -rwxr-xr-x. 1 root root 689168 Feb 5 2013 arm-linux-gnu-c++filt -rwxr-xr-x. 1 root root 545664 Feb 6 2013 arm-linux-gnu-cpp -rwxr-xr-x. […]

linux3 / gcc46:“-fnon-call-exceptions”,哪个信号是陷阱指令?

(环境:Linux 3.0 / x86_64上的gcc / g ++ 4.6.1 in -std = gnu ++ 0x模式…) #include <stdlib.h> #include <signal.h> #include <iostream> using namespace std; class SegmentationFault {}; void ThrowSegmentationFault(int) { throw SegmentationFault(); } void ohno(char* x) { *x = 42; } int main() { signal(SIGSEGV, ThrowSegmentationFault); try { ohno(0); } catch (const SegmentationFault&) { cout << […]

从linux到ARM-ELF的交叉编译(ARM926EJ-S / MT7108)

我已经在我的Ubuntu系统上安装了所有的交叉编译软件包,但是有一个问题,需要一些帮助。 Processor : ARM926EJ-S rev 5 (v5l) BogoMIPS : 184.72 Features : swp half thumb fastmult edsp java CPU implementer : 0x41 CPU architecture: 5TEJ CPU variant : 0x0 CPU part : 0x926 CPU revision : 5 Cache type : write-back Cache clean : cp15 c7 ops Cache lockdown : format C Cache format : […]

如何通过makefile包含头文件

我知道在makefile中有一个标志可以在所有正在编译的文件中包含头文件,就像有一个-D标志来包含一个定义一样。 包含头文件的标志是什么? 我不记得知道。

linux / gcc:在C / C ++程序中的lddfunction

有没有一种简单而有效的方法来知道给定的dynamic链接的ELF是否缺less一个所需的.so文件来运行,所有这一切都来自C / C ++程序的内部? 我需要一个function与ldd相似的程序,而不需要执行ELF来查找系统中的(met / unmet)依赖关系。 也许通过一些库问ld-linux.so实用程序? (我是一个新手在这个部分的Linux =) 注意:读取ldd的源代码对我的意图不是很有帮助:看起来ldd实际上正在分叉另一个进程并执行程序。 如果不知道某个程序没有执行它的依赖性,那么有没有办法,至less可以在我的程序中快速列出这个ELF所需的.so文件? 在此先感谢=)

gdb无法加载源文件?

我只用arm-linux-gcc在主机(debian i386)上用-g编译一个简单的c文件。 然后将a.out文件复制到目标(arm,uclibc)计算机上。 运行a.out就行了。 使用gdb(terget) gdb a.out并列出源代码,它说No such file or directory 。 事实一直如此呢? 如果我将1.c文件复制到目标,那么list命令是列出源代码。 我的问题: gdb一直如此,还是有其他的select我可以控制? 你有什么build议来debugging程序? 我为我可怜的英语感到抱歉 一些信息可能有用: 源代码1.c文件 : #include <stdio.h> #include <string.h> #include <stdlib.h> // main function int main(void) { int i; for(i=0;i<3;i++){ printf("i=%d\n",i); } return 0; } 交叉编译版本(主机) zodiac1111@debian:tmp$ arm-linux-gcc -v Using built-in specs. Target:arm-unknown-linux-uclibcgnueabi Configured with:/home/ldsh/rt9x5/linux/buildroot/buildroot/output/toolchain/gcc-4.3.5/configure \ –prefix=/opt/rt9x5/arm-linux-uclibcgnueabi/usr –build=i686-pc-linux-gnu –host=i686-pc-linux-gnu […]