linux c and asm 同时使用

本文介绍如何在Cygwin环境下正确编译和链接程序,解决因符号未定义导致的链接错误,并提供了解决Cygwin中文乱码问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from: 《自己动手写操作系统》

 

1. 中断向量表 查看 linux/init/main.c in http://lxr.linux.no/#linux+v2.6.32/init/main.c

2.

; [root@XXX XXX]# nasm -f elf foo.asm -o foo.o
; [root@XXX XXX]# gcc -c bar.c -o bar.o
; [root@XXX XXX]# ld -s foo.o bar.o -o foobar
; [root@XXX XXX]# ./foobar
; the 2nd one
; [root@XXX XXX]#

但是我的cygwin下报错:
$ ld -s foo.o bar.o -o foo
foo.o: In function `start':
foo.asm:(.text+0xb): undefined reference to `choose'
bar.o:bar.c:(.text+0x1e): undefined reference to `myprint'
bar.o:bar.c:(.text+0x34): undefined reference to `myprint'

3. cygwin 中文乱码 (http://blog.sina.com.cn/s/blog_3ee207aa010008ml.html )

直接执行
alias ls='ls --color --show-control-chars --time-style=long-iso'
或者把上面的内容加到/etc/profile中重启Cygwin即可。

为了使使用更方便,推荐增加如下配置信息:

1. 编辑用户home目录下的文件.inputc,去除以下几行的注释:

set meta-flag on

# 关闭bash命令行8字节字符转义符的转换
set convert-meta off

# 使bash命令行支持8字节字符输出
set output-meta on
set input-meta on

2 编辑用户home目录下的文件.bash_profile,在文件末尾加上下面几行:

alias ls='ls --color --show-control-chars --time-style=long-iso'
export LC_ALL=zh_CN.GB23122
export LC_CTYPE=zh_CN.GB2312
export LANG=zh_CN.GB2312
export XMODIFIERS="@im=Chinput"3
stty cs8 -istrip
stty pass8
# Update: 少了这个less就不支持中文了
export LESSCHARSET=latin1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值