C SGABIOS编译错误

C SGABIOS编译错误,c,gcc,assembly,compiler-errors,binaryfiles,C,Gcc,Assembly,Compiler Errors,Binaryfiles,我正试图建立在我的MacBookPro上。不幸的是,我遇到了一些我不熟悉的奇怪的编译错误。当我尝试运行make时,以下是我得到的输出: Ajax-2:sgabios-read-only dash$ make rm -f .depend cc -E -M -Wall -Os -m32 -nostdlib sgabios.S >.tmpdepend && mv .tmpdepend .depend make clean rm -f sgabios.bin csum8 sga

我正试图建立在我的MacBookPro上。不幸的是,我遇到了一些我不熟悉的奇怪的编译错误。当我尝试运行make时,以下是我得到的输出:

Ajax-2:sgabios-read-only dash$ make
rm -f .depend
cc -E -M -Wall -Os -m32 -nostdlib  sgabios.S >.tmpdepend && mv .tmpdepend .depend
make clean
rm -f sgabios.bin csum8  sgabios.o *.elf *.srec *.com version.h
touch sgabios.S
cc -Wall -Os -m32 -nostdlib -DBUILD_DATE="\"Fri Aug 31 19:10:03 UTC 2012\"" -DBUILD_SHORT_DATE="\"08/31/12\"" -DBUILD_HOST="\"Ajax-2.local\"" -DBUILD_USER="\"dash\""   -c -o sgabios.o sgabios.S
sgabios.S:24:Unknown pseudo-op: .type
sgabios.S:24:Rest of line ignored. 1st junk character valued 95 (_).
sgabios.S:30:Unknown pseudo-op: .size
sgabios.S:30:Rest of line ignored. 1st junk character valued 95 (_).
sgabios.S:33:Unknown pseudo-op: .type
sgabios.S:33:Rest of line ignored. 1st junk character valued 108 (l).
sgabios.S:156:Alignment too large: 15. assumed.
make: *** [sgabios.o] Error 1
我的GCC版本信息如下:

Ajax-2:sgabios-read-only dash$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
我已经做了大量的谷歌搜索和蒙骗,但似乎没有任何效果。我也尝试过cygwin的整个混乱,我得到了几乎相同的东西。我上传了一些最新版本的文件供您参考:

更新:在cygwin发布了make的输出:

dash@Ajax_virtual ~/sgabios-read-only
$ make
rm -f .depend
cc -E -M -Wall -Os -m32 -nostdlib  sgabios.S >.tmpdepend && mv .tmpdepend .depen                                    d
make clean
make[1]: Entering directory `/home/dash/sgabios-read-only'
rm -f sgabios.bin csum8  sgabios.o *.elf *.srec *.com version.h
make[1]: Leaving directory `/home/dash/sgabios-read-only'
touch sgabios.S
cc -Wall -Os -m32 -nostdlib -DBUILD_DATE="\"Fri, Aug 31, 2012 10:14:21 PM\"" -DB                                    UILD_SHORT_DATE="\"08/31/12\"" -DBUILD_HOST="\"Ajax_virtual\"" -DBUILD_USER="\"d                                    ash\""   -c -o sgabios.o sgabios.S
sgabios.S: Assembler messages:
sgabios.S:22: Error: junk at end of line, first unrecognized character is `"'
sgabios.S:24: Warning: .type pseudo-op used outside of .def/.endef ignored.
sgabios.S:24: Error: junk at end of line, first unrecognized character is `_'
sgabios.S:30: Warning: .size pseudo-op used outside of .def/.endef ignored.
sgabios.S:30: Error: junk at end of line, first unrecognized character is `_'
sgabios.S:33: Warning: .type pseudo-op used outside of .def/.endef ignored.
sgabios.S:33: Error: junk at end of line, first unrecognized character is `l'
<builtin>: recipe for target `sgabios.o' failed
make: *** [sgabios.o] Error 1
dash@Ajax_virtual~/sgabios只读
$make
rm-f.depend
cc-E-M-Wall-Os-m32-nostdlib sgabios.S>.tmpdepend和mv.tmpdepend.depen d
澄清
make[1]:输入目录“/home/dash/sgabios只读”
rm-f sgabios.bin csum8 sgabios.o*.elf*.srec*.com version.h
make[1]:将目录`/home/dash/sgabios保留为只读'
触摸sgabios.S
cc-Wall-Os-m32-nostdlib-DBUILD\u DATE=“\”2012年8月31日星期五晚上10:14:21\”-DB UILD\u SHORT\u DATE=“\”2012年8月31日\”-DBUILD\u主机=“\”Ajax\u虚拟\”-DBUILD\u用户=“\”d ash\”-c-o sgabios.o sgabios.S
sgabios.S:汇编程序消息:
sgabios.S:22:错误:行尾有垃圾,第一个无法识别的字符是“`”
sgabios.S:24:警告:。忽略在.def/.endef之外使用的类型pseudo op。
sgabios.S:24:错误:行尾有垃圾,第一个无法识别的字符是` `'
sgabios.S:30:警告:。忽略了在.def/.endef之外使用的大小伪操作。
sgabios.S:30:错误:行尾有垃圾,第一个无法识别的字符是`'
sgabios.S:33:警告:。忽略在.def/.endef之外使用的类型pseudo op。
sgabios.S:33:错误:行尾有垃圾,第一个无法识别的字符是'l'
:目标'sgabios.o'的配方失败
make:**[sgabios.o]错误1

这是因为汇编程序文件是为而编写的,但OSX不使用它,而是使用它自己的汇编程序


此外,根据GNU as中指令的含义取决于目标平台。链接文件中的指令仅对linux(和其他Unice)上使用的ELF目标有效但是cygwin是COFF的目标。

谢谢你的回复。我也尝试了cygwin,得到了几乎相同的结果,我在上面的更新中发布了。谢谢。我认为最简单的方法是让Ubuntu在Virtualbox中运行,然后从那里开始尝试。Run
make CC=“CC-v“
以显示汇编程序的实际调用并发布