使用GCC的链接器错误,包括binutils和textinfo的错误。
我每次都会遇到此错误,同时编译程序,配置和安装某些内容,例如/usr/local/bin/ld: this linker was not configured to use sysroots collect2: error: ld returned 1 exit status 什么时候来的,什么是实际问题?另外,我该如何解决? 我使用 synaptic synaptic 包装管理器. 解决方案 尝试将GCC与以下选项使用:gcc --sysroot=/usr/local 但是,正如其他人在评论中告诉您的那样,不要试图用binutils等关键包裹弄乱您的系统,除非您知道自己在做什么. 其他解决方案 如果您试图安装一个应该可以工作的binutils,则应在/usr/bin中发现的binutil,则应该知道 gcc调用 ld> ld> ld . ld的binutils由源构建的,默认选项拒绝--sysroot选项. A --sysroot选项仅在Bi
8 2024-04-07
编程技术问答社区
为什么scanf("%hhu", char*)会覆盖其他变量,而这些变量是本地的?
标题说明了一切. 我正在使用GCC 4.7.1(与CodeBlocks捆绑在一起),我遇到了一个奇怪的问题.考虑一下: int main() { unsigned char a = 0, b = 0, c = 0; scanf("%hhu", &a); printf("a = %hhu, b = %hhu, c = %hhu\n", a, b, c); scanf("%hhu", &b); printf("a = %hhu, b = %hhu, c = %hhu\n", a, b, c); scanf("%hhu", &c); printf("a = %hhu, b = %hhu, c = %hhu\n", a, b, c); return 0; } 对于输入1、2和3,此输出 a = 1, b = 0, c = 0 a = 0, b = 2, c = 0 a = 0, b = 0, c = 3 但是,如
0 2024-04-06
编程技术问答社区
更有效的汇编代码?
我最近开始学习集会.只是想知道为什么我以下面列出的替代"我的汇编"来编写此组件.它削减了一个指令.有任何想法吗?这种有效的情况太罕见了吗?对于我来说似乎很浪费,将3个价值移至EAX首先. C代码: #include int main() { int a = 1; int b = 3; a = a+b; return a; } 组装: Dump of assembler code for function main: 0x080483dc : push ebp 0x080483dd : mov ebp,esp 0x080483df : sub esp,0x10 0x080483e2 : mov DWORD PTR [ebp-0x4],0x1 0x080483e9 : mov DWORD PTR [ebp-0x8],0x3 0x0
6 2024-03-17
编程技术问答社区
GCC编译产生 "real.h:53: error: 'SIZEOF_LONG' undeclared here (not in a function)"
我正在尝试在不幸的是,make从 开始就引发了很多错误 gcc -c -DIN_GCC_FRONTEND -g -fkeep-inline-functions -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-formIn file included from ../../gcc-4.7.2/gcc/tree.h:32, from ../../gcc-4.7.2/gcc/c-lang.c:27: ../../gcc-4.7.2/gcc/real.h:53: error: 'SIZEOF_LONG' undeclared here (not in a function) In file included from ../../gcc-4.7.2/gcc/tree.h:32,
8 2024-03-03
编程技术问答社区
GCC:-static和-pie对x86不兼容?
我正在重新编译Android 5.0的一些可执行文件,因为它要求可执行文件为PIE.我能够在配置时仅添加一些参数(使用独立工具链)来重新编译ARM: export CFLAGS="-I/softdev/arm-libs/include -fPIE" export CPPLAGS="$CPPFLAGS -fPIE" export CXXLAGS="$CXXFLAGS -fPIE" export LDFLAGS="-L/softdev/arm-libs/lib -static -fPIE -pie" 武器没有错误: configure:3406: arm-linux-androideabi-gcc -o conftest -I/softdev/arm-libs/include -fPIE -L/softdev/arm-libs/lib -static -fPIE -pie conftest.c >&5 configure:3410: $? = 0 ,但是我遇到错误时,
20 2024-02-12
编程技术问答社区
在Windows的gcc移植中,thread_posixs和thread_win32有什么区别?
我想下载Windows的最新版本gcc 4.7.2编译器.当我到达这个 线程posix threads-win32 这两者有什么区别?它们只是线程实现吗?我的意思是,它们在实施方式上仅不同,因此结束结果(类,如何使用它们等)保持不变?还是他们强加了特定的编码样式? 解决方案 因此,您提供的链接导致Windows的独立gcc 4.7.2的构建,又称Mingw64.为了构建此编译器,使用了一组脚本,这些脚本有助于定义编译选项.这些脚本简称为mingw-builds,可以在不同的地方找到: Google Code github fork 脚本具有一个选项,该选项指定要用于C ++ 11标准的STD ::线程的一部分(允许使用 请注意,Windows不支持所有POSIX API,因此需要使用一些外部仿真库(winpthreads). GCC源配置脚本具有指定API(-enable-threads =)的选项,这就是构建脚本中使用的内容. 简而言之,对于
4 2023-12-05
编程技术问答社区
如何禁用缩小转换的警告?
我使用-Wall并更新到新的GCC,我有很多warning: narrowing conversion.我想禁用它们,但请留下所有其他警告(理想情况下). 我什么也找不到narrowing in .org/onlinedocs/gcc/parning-options.html 如何禁用缩小转换警告? 根本可能吗? P.S. 我需要禁用警告,而不是在源代码中修复它们. 盲人-Wno-conversion无济于事. 解决方案 正如GX_所说,在您的命令行中添加-Wno-narrowing应忽略这些错误.升级到C ++ 0x. 时会遇到这个 其他解决方案 作为一个小的FYI,如 https:https://clang. llvm.org/docs/diarosticsReference.html#wnarrowing 这是-wno-c ++ 11 naring的别名(有多个狭窄的警告标志) 其他解决方案 尝试此选项 -wno-error =缩
26 2023-11-27
编程技术问答社区
std::vector是否满足Boost.Interprocess分配器的容器要求?
在boost::interprocess文档中,据说将容器存储在共享内存中的要求: STL容器可能不会假设分配了分配器的内存可以与同一类型的其他分配器进行处理.所有分配器对象必须仅在分配给一个对象的内存可以与另一个对象进行交易时进行比较,并且只能在运行时使用operator==()进行测试. 容器的内部指针应为allocator::pointer类型,并且容器可能不会假设allocator::pointer是一个原始的指针. 所有对象都必须通过allocator::construct和allocator::destroy函数构造. 我使用的是-STD = C ++ 11(和Boost 1.53)的GCC 4.7.1. 使用以下定义ShmVector类型安全吗? typedef boost::interprocess::allocator
24 2023-11-17
编程技术问答社区
使用unique_ptr来控制一个文件描述符
从理论上讲,我应该能够使用自定义的指针类型和deleter,以使unique_ptr管理不是指针的对象.我尝试了以下代码: #ifndef UNIQUE_FD_H #define UNIQUE_FD_H #include #include struct unique_fd_deleter { typedef int pointer; // Internal type is a pointer void operator()( int fd ) { close(fd); } }; typedef std::unique_ptr unique_fd; #endif // UNIQUE_FD_H 这不起作用(带有-std=c++11参数的GCC 4.7).它响应以下错误: In file included from /usr/incl
22 2023-11-07
编程技术问答社区
如何在Ubuntu 20中安装旧版本的GCC -3或GCC -4 20
我正在尝试为我的Ubuntu安装旧版本的GCC-4 enter code here 制作构建目录(MKDIR GCC-Build && CD GCC-Build) 下载源文件:wget http:http:http:http:http:http:http:http:http://www.netgull.com/gcc/releases/gcc-4.8.0/gcc-4.8.0.0.tar.bz2 (调整此命令以使用适当的镜像站点. 解开文件(tar -xvjf) 安装一些其他库(sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev libc6-dev) 编译来源:./gcc-4.8.0/configure -prefix =/app/gcc/4.8.0 跑步(这需要花费一些时间才能完成.去煮一些咖啡或烤一些饼干.;-)) 安装代码:sudo make install CPU体系结构 lscpu Architecture:
12 2023-11-02
编程技术问答社区
链接错误:未定义对icu_50::UnicodeString::UnicodeString()的引用。
我正在尝试编译我的项目,其中我已声称为班级成员: icu::UnicodeString label; icu::UnicodeString tags; icu::UnicodeString domain; icu::UnicodeString data; 包含后(是的) #include 在我的cmakelists.txt中,它搜索,查找和链接:icuuc icudata(libicuuc,libicudata),如输出所建议的,然后提出错误: -o icarus -rdynamic -lpoconet -lpocoutil -lpocoxml -licuuc -licudata 我已经从源ICU4C 50.1.2构建和安装,并在/usr/local/*下安装了它 cmake正确地找到了库,因为我的错误来自链接阶段: 未定义的引用icu_50::UnicodeString::UnicodeString()' un
16 2023-09-29
编程技术问答社区
Mac上的gcc 4.7.3和gdb 7.6-奇怪的步进问题
我最近安装了 GCC 4.7.3 和 gdb 7.6 在我的OS X 10.7系统上通过MacPorts,能够编译C ++ 11代码.我不能使用Apple的自我制作的clang ++和GDB,因为它不允许我正确调试标准模板库代码(例如,如果我删除了列表,则程序崩溃). 现在,有了新的GCC/GDB组合,我有一些涉及功能的问题.以这个最小的例子: #include class A { public: virtual void testMethod() { printf("test in A\n"); } }; void test(A &a) { printf("asdf\n"); a.testMethod(); // here, stepping works with -std=c++11 } int main() { A a; a.testMethod(); test(a);
28 2023-05-14
编程技术问答社区
在gcc-4.7和openMP中缺少__emutls_get_address
我正在尝试使用Mac OS 10.8.2上的自我编译的GCC-4.7.1编译程序.该程序使用OpenMP,并且汇编成功;但是,当我尝试运行程序时,动态链接器会向 投诉 dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address Referenced from: /usr/local/gcc-4.7.1/lib/libgomp.1.dylib Expected in: /usr/lib/libSystem.B.dylib dyld: Symbol not found: ___emutls_get_address Referenced from: /usr/local/gcc-4.7.1/lib/libgomp.1.dylib Expected in: /usr/lib/libSystem.B.dylib 与-fopenmp编辑的任何程序中,此问题不断存在,包括MWE #i
14 2023-05-11
编程技术问答社区
(优化?)关于GCC std::thread的错误
在用std::thread测试某些功能时,一个朋友遇到了GCC问题,我们认为值得询问这是GCC错误,或者此代码可能有问题(例如,代码打印(例如)" 7 8 9 10 1 2 3",但我们希望印刷[1,10]中的每个整数): #include #include #include #include int main() { int arr[10]; std::iota(std::begin(arr), std::end(arr), 1); using itr_t = decltype(std::begin(arr)); // the function that will display each element auto f = [] (itr_t first, itr_t last) { while (first != last) std:
22 2023-04-06
编程技术问答社区
GCC-4.7 编译错误
当我将最后一行从此片段添加到我的程序代码时: typedef std::set JobSet; typedef boost::shared_ptr JobSetPtr; JobSetPtr jobs_; jobs_->insert ( job ); // line 60 我得到此错误: g++-4.7 -o /home/kron/Software/Synchronizer/1.0/Main.o -c src/Main.cpp In file included from /usr/include/c++/4.7/string:50:0, from /usr/include/c++/4.7/bits/locale_classes.h:42, from /usr/include/c++/4.7/bits/ios_base.h:43, fr
34 2023-03-22
编程技术问答社区
g++ 4.7将运算符""作为宏扩展的兄弟姐妹来评估
我将一些代码移至GCC 4.7(从4.6)中,并遇到了一些编译器错误,并在 GCC 4.7移植指南: 用户定义的文字和空格 ISO C11模式中的C ++编译器std={c++11,c++0x,gnu++11,gnu++0x} 支持用户定义的文字,这与某些有效 ISO C ++ 03代码. 尤其是,现在需要使用字符串字面之后的空格 在可能是有效用户定义的文字之前.拿 有效的ISO C ++ 03代码 const char *p = "foobar"__TIME__; 在c ++ 03中, time 宏扩展到某个字符串字面,IS 与另一个连接.在C ++ 11 __TIME__未扩展, 相反,operator "" __TIME__正在查找,导致 诊断后: error: unable to find string literal operator ‘operator"" __TIME__’ 这适用于任何字符串的字符串,而没有某些字符 宏.要修复,只需
44 2023-03-22
编程技术问答社区
在构建gcc 4.7之后,Clang 3.2的构建被破坏了
所以我知道clang(大部分时间)在GNU的LibstDC ++ 3上,但是在构建GCC 4.7.0(cuz'的gcc'之后!),我似乎遇到了一个问题,所有的clang途径都是错误的.我是否需要清洁我的构建目录并从头开始,以换取clang,特别是它给了我错误位/c ++ config.h丢失,尽管它在那里,并且使用GCC 可以构建良好 我在Linux X86上,Ubuntu 12.04 解决方案 是的,GCC标头和Libs的路径包括版本,4.7.0在您的情况下,因此您需要用--with-gcc-toolchain=...重建clang,然后重新安装
106 2023-03-12
编程技术问答社区
在构建gcc 4.7之后,Clang 3.2的构建被破坏了
所以我知道clang(大多数情况下)在GNU的LibstDC ++ 3上,但是在构建GCC 4.7.0(Awesome!)之后,我似乎已经遇到了一个问题,所有的Clang的路径都是错误的.我是否需要清洁我的构建目录并从头开始,以换取clang,特别是它给了我错误位/c ++ config.h丢失,尽管它在那里,并且使用GCC 可以构建良好 我在Linux X86上,Ubuntu 12.04 解决方案 是的,GCC标头和Libs的路径包括版本,4.7.0在您的情况下,因此您需要使用--with-gcc-toolchain=...重建clang,然后重新安装
26 2023-03-11
编程技术问答社区
如何使用 isnan 作为 std::find_if 的谓语函数(c++11)。
我有一个在std::vector cats上运行的代码,并且正在做类似的代码: std::find_if(cats.begin(), cats.end(), std::isnan); 这是在4.3之前的GCC下编译的,但不再使用GCC 4.7.2编译.我有这样的错误: error: no matching function for call to 'find_if(std::vector::iterator, std::vector)' 如何在新的海湾合作委员会下进行编译?最好还是在较旧的海湾合作委员会下?当然,没有摆脱STL并手动编写循环.如果不可能两者都可以做到,那么新的海湾合作委员会就足够了,我将在其中留下#define. . 解决方案 您实际想要的过载不是GCC 4.7中的模板,它只是具有此签名的
44 2023-03-02
编程技术问答社区
有可能通过模板间接访问基类中的私有类型
我试图在编译时选择一种类型,具体取决于在给定范围中是否公开可用的类型.最好直接进入代码: #include #include class Logger { std::string _p; public: Logger(std::string p): _p(p) { } void say(std::string message) { std::cout struct use_logger { static std::size_t test(P*); static
22 2023-03-02
编程技术问答社区