前言:所有踩过的坑,都是前进的必须;进坑并不可怕,训练一种脱坑的思维和办法才“可怕”。
最近在Ubuntu做项目移植,用gcc、g++编译程序,总是卡在一个出错的地方:
/usr/bin/ld: 2: Syntax error: newline unexpected
collect2: error: ld returned 2 exit status
开始还怀疑是程序的问题,后来感觉是这个ld不正常;因为之前没有遇到过此类的问题,而且对这个ld比较陌生,仅仅知道是个链接器。
好歹做过逆向,对于逆向人员遇到问题的直接反应,可能就是“砸烂这个旧世界”,看看里边究竟什么鬼在作祟:
//ld 为何报的是语法错误?????
先看看这个ld是个什么鬼:
linux的迷人之处,或许binutils组件库是其一,这个东西里边提供了许多可以对文件动手术的工具,file就是一个。
file /usr/bin/ld
/usr/bin/ld: symbolic link to x86_64-linux-gnu-ld
其实就是GNU的标准链接器,但是还不清楚这个文件的格式;
接下来,看看报错的字符串在不在ld中:
strings /usr/bin/ld
!<arch>
/ 0