遇到的debug整理20190107

已解决:最后的链结失败: 错误的值

RT0.o: relocation R_X86_64_PC32 against symbol `phgTetFaceVertexi’ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: 错误的值
collect2: error: ld returned 1 exit status

  1. 运行如下代码,查看返回情况。
ldd test
linux-vdso.so.1 =>  (0x00007fff0fd95000)
libsofile.so => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f937b5de000)
/lib64/ld-linux-x86-64.so.2 (0x0000563f7028c000)
  1. 如上代码输出发现,确实是找不到对应的.so文件。
    这是由于linux自身系统设定的相应的设置的原因,即其只在/lib and /usr/lib下搜索对应的.so文件,故需将对应so文件拷贝到对应路径。
sudo cp libsofile.so /usr/lib

再次执行./test,即可成功运行。

已解决:ubuntu init.c:(.text+0x30):对‘main’未定义的引用

网上大部分资料都是说因为Makefile中源码部分,应该将含有main函数的源程序名字放在第一个,不然找不到入口,总的来说就是因为main入口不对。总结一下,造成这个错误的原因有如下:

  1. main拼写错误
  2. 主函数中没有main函数
  3. makefile中源程序放置顺序应该是含有main函数的在前面
  4. makefile中源程序没有加后缀名

已解决: Makefile:xxx: recipe for target xxx failed

原因:原来是linux下面的那些命令,比如iconv,mv等,执行结果的,如果是没有错误的,会返回0,表示正常的,而此处hhc是windows下面的工具,其返回1表示执行结果正常,导致了makefile收到1,以为是程序执行错了呢,所以报错。
解答:设置合适的返回值,例如C语言,主函数设置返回值为0.

已解决:问题:Python文件运行时报TabError: inconsistent use of tabs and spaces in indentation

原因:说明Python文件中混有Tab和Space用作格式缩进。这通常是使用外部编辑器编辑Python文件时,自动采用Tab进行格式缩进。
解决:将Tab转换成4个Space(通常)或者用Python编辑器(如pyDev)格式化。

已解决:关于发邮件报错535 Error:authentication failed解决方法

调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件。

已解决:/bin/sh^M:损坏的解释器: 没有那个文件或目录

脚本文件保存时使用了DOS格式,用DOS2UNIX转为UNIX格式,也可以用vim打开,用:set ff=unix转换。

不要在 Windows下编辑脚本文件,否则经常会遇到这种问题
解决:可以用 vim 打开文件,然后执行冒号命令:

vim
:set ff=unix
:wq

已解决:warning: initialization makes pointer from integer without a cast [-Wint-conversion]

解决:检查指针有没有错误赋值,这个警告会造成段错误。

猜你喜欢

转载自blog.csdn.net/sinat_30967935/article/details/86030294
今日推荐