▶ 编译与调试
编译器学习
罗伯特祥
读万卷书,也要行万里路!
展开
-
windows下cmake指定编译链的方式
引起来,注意此处博主因为有MSVC的原因,所以必须还要使用。跟Linux下相同,只不过要注意的是,必须使用。编译时,指令同样使用。原创 2024-08-20 16:14:21 · 301 阅读 · 0 评论 -
使用nm查看.a文件时函数列表前方的前缀T、U等含义
表示该符号是一个数据(Data)符号,通常用于初始化数据段(initialized data section)。这通常指的是全局变量或静态变量。:表示该符号是一个文本(Text)符号,通常用于代码段(code section)。:表示该符号是一个只读数据符号,通常用于只读数据段(read-only data section)。:表示该符号是一个未初始化的全局或静态变量,位于未初始化数据段(BSS section)。:表示该符号是一个弱引用(Weak),它允许在其他编译单元中有相同名称的符号覆盖这个符号。原创 2024-08-16 16:07:19 · 451 阅读 · 0 评论 -
浮点数例外 (核心已转储) 的问题记录
一般这种问题,是程序运行过程中出现浮点数运算错误导致的程序崩溃。第一种原因是最常见的,检查程序,避免出现除数为0即可。原创 2024-08-02 18:25:40 · 591 阅读 · 0 评论 -
非内存溢出导致的Sengmentation fault问题解析
查到最后,发现是递归的问题,由于条件判断有问题导致递归一直进行,进而产生了该问题。我们都知道,一般内存越界、非法访问等因素会导致程序报。检查,发现没有内存问题,但是就是报。博主又遇到奇奇怪怪的问题了。修复条件判断后,问题得到解决。原创 2024-08-02 18:20:23 · 235 阅读 · 0 评论 -
python调dll时报FileNotFoundError: Could not find module ‘xxx.dll‘(or one of its dependencies)的解决方案
有文章说是因为加载的dll缺少依赖库,使用VS的dumpbin.exe查看以后,发现依赖的dll都存在,所以博主遇到的应该不是此类问题。原因是因为python3.8及以上版本的dll搜索机制变更导致的,目前暂时的解决方法:使用。如题所述, 在windows下,python调用dll文件时,无论是使用。将路径加载进来,结果发现也不生效。还有文章说是dll路径不正确,先使用。方法加载dll并设置参数。可以完美解决该问题。原创 2024-07-29 16:29:55 · 1410 阅读 · 1 评论 -
python调用.a或.lib库的运行结果异常的问题记录
Python调用.a或.dll文件时发现:①计算过程老是没结束的就异常退出②不同的python版本调用库的计算结果不同原创 2024-06-26 13:57:44 · 328 阅读 · 0 评论 -
一款能查看exe依赖dll和dll内容的小工具
Dependencies是对旧版软件Dependency Walker的重写,该软件随 Windows SDK 一起提供,但其开发在 2006 年左右停止。Dependencies可以帮助 Windows 开发人员解决 dll 加载依赖问题。原创 2024-05-15 11:31:44 · 482 阅读 · 0 评论 -
cmake调用MSVC编译时报C2071、C2061、C2059、C2449等错误的解决方案
cmake调用MSVC编译时报C2071、C2061、C2059、C2449等错误的解决方案原创 2024-05-10 20:46:58 · 457 阅读 · 0 评论 -
CMake拷贝文件夹的两种方式
【代码】CMake拷贝文件夹的两种方式。原创 2024-04-15 18:16:21 · 1236 阅读 · 0 评论 -
程序加printf有正确的输出、不加则为错误的输出的可能原因及解决方案
【程序加printf有正确的输出、不加则为错误的输出的可能原因及解决方案】原创 2024-04-07 20:21:04 · 691 阅读 · 0 评论 -
记一次Debug与Release版程序输出不一致的问题解决
在x86平台下无论Debug还是Release都没问题,而在arm平台下Debug版本程序无问题,Release版本程序(-O3编译)发现输出值不正确,怀疑值被篡改,于是在调用前后分别使用。起初怀疑各种变量是不是没有初始化,查了大半天发现也没啥问题,也不可能是内存越界问题,如果是越界,程序早就甭了。原创 2024-04-07 20:14:53 · 415 阅读 · 0 评论 -
记CMakeLists.txt中已经配置-fPIC参数但未生效的解决方案
博主的库会被编译成一个供第三方使用的静态库,第三方在使用博主的库编译动态库时,若不加。最后的解决方案按第2节中的方法5进行实现,即在执行cmake的时候手动配置参数。,具体原因未知,大概跟cmake的变量作用范围有关,先解决问题再说。字段,导致第三方用户在编译动态库的时候报。执行cmake后,检查生成的。字段,若无则说明配置失败。原创 2024-03-29 14:32:55 · 920 阅读 · 0 评论 -
cmake指定不同版本的mingw编译
cmake指定不同版本的mingw编译,实现思路: 通过指定编译链的方式实现即可。原创 2024-03-18 15:04:13 · 471 阅读 · 0 评论 -
C判断操作系统、编译器类型、编译器版本及编译位数
3. 编译位数使用操作符来检测指针的大小。在64位编译中,指针的大小通常为8字节,而在32位编译中通常为4字节。参考链接:原创 2024-03-04 17:23:04 · 522 阅读 · 0 评论 -
引用httplib时报undefined reference to `__imp_WSASocketW‘的解决方案
【代码】引用httplib时报undefined reference to `__imp_WSASocketW'的解决方案。原创 2024-01-30 00:41:21 · 341 阅读 · 0 评论 -
windows下编译报‘mutex‘ in namespace ‘std‘ does not name a type的解决方案
error: 'mutex' in namespace 'std' does not name a typeerror: 'mutex' is not a member of 'std'error: 'mutex' was not declared in this scope等问题的解决方案原创 2024-01-19 11:16:18 · 3360 阅读 · 1 评论 -
几款函数调用关系查看工具
几款函数调用关系查看工具原创 2024-01-15 10:52:04 · 1135 阅读 · 0 评论 -
C和C++混合编程时CMakeLists编写需要注意的地方
cmake以后编译到100%,在链接阶段报错undefined reference to 'xxxxxx',此处报错的函数是C库中的一个函数,本文陈述该案例中的解决方案。原创 2023-11-27 09:35:17 · 514 阅读 · 0 评论 -
Valgrind内存诊断工具的使用笔记
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的神器,能够帮助我们快速定位到程序的内存问题,比如内存泄漏导致的。选项,使用memcheck检查时的错误信息可精确到行。段错误 (核心已转储)原创 2023-09-01 14:36:49 · 428 阅读 · 0 评论 -
记一次vscode配置CMake编译task的坑(.a文件报文件格式错误)
task.json中的args字段不能包含空格,不同参数必须分开写。原创 2023-07-25 19:47:57 · 571 阅读 · 0 评论 -
CMakelists中的延时方案
如果你需要在编译期间延时执行一些操作,你可以考虑使用一些其他的技术,如脚本语言来实现。命令来调用其他的脚本,并在脚本中实现延时操作。,它会在生成构建系统时解析CMake脚本,并执行其中的命令。文件中,无法直接延时执行特定的代码操作。中调用外部脚本来执行延时操作。原创 2023-07-04 11:19:44 · 490 阅读 · 0 评论 -
windows下lib文件中的函数列表查看
可以使用Visual Studio中自带的dumpbin工具。原创 2023-05-24 19:01:38 · 2302 阅读 · 0 评论 -
CMake中指定msvc编译时取消【运行时错误检查】和【缓冲区安全检查】的实现方法
使用时能直接在项目属性里配置,但如果使用cmake指定msvc时,这种方案就无法实现了。原创 2023-05-23 17:20:09 · 545 阅读 · 0 评论 -
数组或结构体赋值时memcpy与直接赋值的效率比较
数组或结构体赋值时memcpy与直接赋值的效率比较。原创 2023-05-17 16:50:05 · 4585 阅读 · 0 评论 -
linux下查看.a文件中的函数及变量的方法
【代码】linux下查看.a文件中的函数及变量的方法。原创 2023-05-09 10:27:43 · 974 阅读 · 0 评论 -
Jenkins中需要多次执行某条报错指令的解决方案
执行的时候如果出现了返回值为非零将会继续执行下面的脚本 , 在脚本会出现错的时候, 执行set +e , 当脚本出现有错的时候,继续执行下面的代码。: 执行的时候如果出现了返回值为非零,整个脚本 就会立即退出, 经常用于脚本的开头使用,在脚本开始的时候如果不能执行,那么脚本下面的就会退出。也就是说,只要指令执行报错,会返回一个非零值,检测到这个非零值,脚本就exit了。指令,之后为了能正常报错,再恢复原有错误退出机制,即使用。编译cmake工程时,发现需要执行三次。在需要报错继续执行的位置加入。原创 2023-04-20 10:53:00 · 521 阅读 · 5 评论 -
CMakeLists中目录含空格导致报警【Invalid character escape】的解决方案
如题所述,CMakeLists中目录含空格导致报警。原创 2023-04-18 10:45:52 · 1195 阅读 · 0 评论 -
vscode中使用launch调试CMake编译的exe文件时打断点不停的解决方案
vscode中使用launch调试CMake编译的exe文件时打断点不停的解决方案原创 2023-02-28 00:01:01 · 1142 阅读 · 1 评论 -
CMake判断当前系统与编译平台类型
【代码】CMake判断当前系统与编译平台类型。原创 2023-03-15 10:18:10 · 1099 阅读 · 0 评论