首页
社区
课程
招聘
[求助]gcc下混用汇编和c链接报错
发表于: 2011-9-10 15:58 5028

[求助]gcc下混用汇编和c链接报错

2011-9-10 15:58
5028
function.s
.text
.code32
.global five

five:
    movl $5, %eax
    ret

test.cpp
extern int five();
int main() {

    five();

    return 0;
}

编译步骤:
g++ -c -o function.o function.s
g++ -o test.exe test.cpp function.o // 这里出现链接错误:
undefined reference to `five()'

汇编部分应该咋写?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
__asm__("
movl $1,%eax // SYS_exit
xor %ebx,%ebx
int $0x80
");

這個是linux的ASM範例,因為linux的組合語言比較不一樣,而且跟VC一樣,需要用__asm__類似這種的標誌。
2011-9-10 16:03
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
楼上说的是内联汇编吧,是写在c函数体内的,这样函数入口会有堆栈保护代码, 我想要的是像vc下的naked关键字那样全裸的函数,gcc下貌似只能用汇编函数来实现,所以不能用内联汇编,只能写在汇编文件里
2011-9-10 16:31
0
雪    币: 416
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是阿,能夠寫匯編就不錯了= =,不要再嫌了= =。
2011-9-10 16:50
0
雪    币: 1254
活跃值: (630)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
汇编写对的。
extern “C” int five();
就可以成功了。

C++函数名字改编了。
2011-9-10 18:50
0
雪    币: 196
活跃值: (96)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
的确 extern "C",多谢~
2011-9-10 19:21
0
雪    币: 105
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个还真没成功过。。  用麻烦的写法就行,纳闷。。
2012-1-27 11:53
0
游客
登录 | 注册 方可回帖
返回
//