Articles of gcc

在没有root权限的linux上安装gcc

我可以访问公共库中的计算机,我想尝试一些C ++或其他代码。 问题是没有安装g ++,我无法使用软件包进行安装,因为我没有root权限。 是否有一个“聪明”的方式来为家庭文件夹中的编程提供一个完整的环境? 我已经安装了gcc(我可以编译C代码)。 另外,我有一个一致的主文件夹。 我不知道在哪里可以find预编译的g ++,我只find源代码,但是我不知道该怎么做。 我试图要求他们安装这个,但它没有工作:)

如何模拟内存分配错误

我的C应用程序使用第三个库,它们自己的内存pipe理。 为了强大,我的应用程序有代码来处理由于缺乏可用内存而导致的库函数失败。 我想testing这个代码,为此,我需要模拟由于内存不足而导致的故障。 推荐使用什么工具? 我的环境是Linux / gcc。

为什么arm-linux-gnueabi-g ++-4.4总是build立一个“7-A”二进制文件?

我正在运行Ubuntu 12:04LTS并安装了arm-linux-gnueabi C和C ++编译器。 编译后的二进制文件不能在我的目标板上运行。 看起来即使我指定了cpu和arch,编译器仍然为错误的CPU构build了一个二进制文件。 而不是atm9tdmi它build立和7-A。 我做错了什么,或者有什么我应该configuration? 谢谢。 ~/ArmTest$ arm-linux-gnueabi-g++-4.4 -mcpu=arm9tdmi -march=armv4t -O main.cpp -o CPPTest ~/ArmTest$ readelf -A CPPTest Attribute Section: aeabi File Attributes Tag_CPU_name: "7-A" Tag_CPU_arch: v7 Tag_CPU_arch_profile: Application Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-2 Tag_FP_arch: VFPv3-D16 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_enum_size: […]

在Linux上运行可执行文件最安全的方法是什么?

我试图运行一个程序从一个未知来源的C代码编译。 我想确保程序不会伤害我的系统。 例如,程序可能有类似system("rm -rf /")的源代码,除非代码被彻底检查,否则这是不可检测的。 我想到了以下两种方法 在像VMWare这样的虚拟机内运行它 在linux上构build一个Windows EXE文件,然后在wine上运行 两者都不是非常优雅的解决scheme,我不能自动化他们。 而且在1的情况下,可能会损害虚拟机。 任何帮助,将不胜感激。 我想用我们可以称之为“沙箱”的方式运行程序。

如何强制gcc从库中链接未引用的静态C ++对象

我正在使用一个C ++库,可以build立一个共享或静态库。 这个库使用工厂技术,在程序启动时静态对象注册自己,并创build静态对象。 只要共享库被使用,这工作正常。 当使用静态版本时,没有一个静态对象被包含到最终的程序中(因为它们没有被直接引用),因此它们的function是不可用的。 有没有办法强制gcc链接时包含库中的所有静态对象? 图书馆是开源的,我可以修改它,如果有帮助。

编译错误:“g ++:错误尝试执行'cc1plus':execvp:没有这样的文件或目录”

当我用php popen编译C / C ++程序…我得到这个错误: g++: error trying to exec 'cc1plus': execvp: No such file or directory 但如果我在shell中运行的PHP代码..它工作正常.. 在Arch Linux中 PHP代码: <?php function rfile($fp) { $out=""; while (!feof($fp)) { $out.= fgets($fp, 1024000); } return $out; } $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r'); $result = rfile($p); pclose($p); echo $result; ?> 谢谢

共享库(.so)如何调用在其加载程序中实现的函数?

我有一个共享库,我实现了,我想要.so调用加载该库的主程序中的函数。 假设我有main.c(可执行文件),其中包含: void inmain_function(void*); dlopen("libmy.so"); 在my.c(libmy.so的代码)中,我想调用inmain_function : inmain_function(NULL); 无论inmain_function是否定义,共享库如何调用inmain_function 。 注意:我想从my.c中调用main.c中的一个符号,反之亦然,这是常见的用法。

版本'CXXABI_1.3.8'找不到(需要…)

当我编译后运行我的程序时,出现以下错误: ./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:版本CXXABI_1.3.8' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.19'找不到(需要./prog)./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:找不到版本'GLIBCXX_3.4.20'( /home/arman/lib/boost_1_55_0/stage/lib/libboost_serialization.so.1.55.0需要) 我同时在~/lib/boost_1_55_0和~/lib/gcc-4.9.0分别安装了~/lib/boost_1_55_0和~/lib/gcc-4.9.0 ,我猜这就是为什么我有问题,但是我不确定关于如何去解决它。 我的~/.profile包含以下行: export LD_LIBRARY_PATH = / home / user / lib / boost_1_55_0 / stage / lib:$ LD_LIBRARY_PATH

实现sizeof运算符

我已经尝试实施sizeof运算符..我已经这样做了.. #define my_sizeof(x) ((&x + 1) – &x) 但是最终总是以任一数据types给出结果为'1'。 我已经为此search了它..我发现代码typecasted #define my_size(x) ((char *)(&x + 1) – (char *)&x) 而代码工作,如果它是typecasted ..我不明白为什么..这个代码也填充结构完美.. 它也在为 #define my_sizeof(x) (unsigned int)(&x + 1) – (unsigned int)(&x) 任何人都可以请解释它是如何工作,如果typecasted,如果没有typecasted? 提前致谢..

什么是build立共享库的“soname”选项?

我学到了“ 程序库HOWTO ”。 它提到使用sonamepipe理版本如下。 gcc -shared -fPIC -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0.0 foo.c ln -s libfoo.so.1.0.0 libfoo.so.1 ln -s libfoo.so.1 libfoo.so 而且我得到的信息,如果soname没有设置。 它将等于libfoo.so.1.0.0,从这里看到答案。 我发现它也可以没有soname,如下所示 gcc -shared -fPIC -o libfoo.so.1.0.0 foo.c ln -s libfoo.so.1.0.0 libfoo.so.1 ln -s libfoo.so.1 libfoo.so 所以我认为唯一有用的一点是,当使用readelf -d libfoo.so命令检查共享库时, soname选项可以告诉你共享库的版本。 还有什么可以做的?