dd102 发表于 2016-7-10 22:18:01

grub4dos_dev环境下 编译外部命令出错

环境是grub4dos_dev_2014-06-25 代码是版本库最新的
   gcc version 4.8.0 20130127 (experimental) (Debian 4.8-20130127-1)
准备自己写个命令,先尝试编译已有的

root@grub4dos_dev:/mnt/cofs/grub4dos_src/grubutils/g4dext# sh build
: Input/output error
: Input/output error
build: line 24: syntax error: unexpected word (expecting "do")

然后尝试按照源代码里面的编译命令编译
dev@grub4dos_dev:/mnt/cofs/grub4dos_src/grubutils/g4dext$ gcc -Wl,--build-id=non
e -DASM_BUILD_DATE="\"20160710"\" -I ../include -m32 -mno-sse -nostdlib -fno-zer
o-initialized-in-bss -fno-function-cse -fno-jump-tables -Wl,-N -fPIE hotkey.c -o
hotkey.o
/tmp/cch3PVfu.s: Assembler messages:
/tmp/cch3PVfu.s:436: Error: junk at end of line, first unrecognized character is
`2'
是不是GCC版本要更新??

dd102 发表于 2016-7-10 22:24:11

我换了个虚拟重新试了下
# bash build
build:行3: $'\r': 未找到命令
build:行8: $'\r': 未找到命令
build:行24: 未预期的符号 `$'do\r'' 附近有语法错误
'uild:行24: `for file in *.c;do
# bash build
build bios.c --> ./tmp/bios.o --> ./bin/bios
build chkpci.c --> ./tmp/chkpci.o --> ./bin/chkpci
build date.c --> ./tmp/date.o --> ./bin/date
build diskid.c --> ./tmp/diskid.o --> ./bin/diskid
build echo.c --> ./tmp/echo.o --> ./bin/echo
build fontfile.c --> ./tmp/fontfile.o --> ./bin/fontfile
fontfile.c: 在函数‘main’中:
fontfile.c:106:45: 错误:‘p’未声明(在此函数内第一次使用)
   memmove((char *)BASE_FONT_ADDR + filemax ,p,(int)&GRUB - (int)p );
                                             ^
fontfile.c:106:45: 附注:每个未声明的标识符在其出现的函数内只报告一次
build g4d_off.c --> ./tmp/g4d_off.o --> ./bin/g4d_off
build hotkey.c --> ./tmp/hotkey.o --> ./bin/hotkey
build inifile.c --> ./tmp/inifile.o --> ./bin/inifile
build mbrcheck.c --> ./tmp/mbrcheck.o --> ./bin/mbrcheck
build memcheck.c --> ./tmp/memcheck.o --> ./bin/memcheck
build menuset.c --> ./tmp/menuset.o --> ./bin/menuset
build snake.c --> ./tmp/snake.o --> ./bin/snake
build time.c --> ./tmp/time.o --> ./bin/time
build umbr.c --> ./tmp/umbr.o --> ./bin/umbr
umbr.c:27:26: 致命错误:../umbr/umbr.h:没有那个文件或目录
#include "../umbr/umbr.h"
                        ^
编译中断。
build unifont.c --> ./tmp/unifont.o --> ./bin/unifont
build unitest.c --> ./tmp/unitest.o --> ./bin/unitest
build vbe.c --> ./tmp/vbe.o --> ./bin/vbe
vbe.c: 在函数‘main’中:
vbe.c:248:16: 警告:从不兼容的指针类型赋值 [默认启用]
   vesa.PUTCHAR = vbe_putchar;
                ^
vbe.c:255:17: 警告:从不兼容的指针类型赋值 [默认启用]
   vesa.SETCOLOR = vbe_setcolor;
               ^
vbe.c:257:16: 警告:从不兼容的指针类型赋值 [默认启用]
   vesa.STARTUP = vbe_init;
                ^
build vbmp.c --> ./tmp/vbmp.o --> ./bin/vbmp
build vfont.c --> ./tmp/vfont.o --> ./bin/vfont
build wenv.c --> ./tmp/wenv.o --> ./bin/wenv

dd102 发表于 2016-7-10 22:30:15

是不是在需要bash的脚本的第一行写上"#!/bin/bash"?
build 文件换行是不是有问,我另存为仅LF换行 就可以执行了,还是因为我虚拟机里面连接不上版本库,在windows下载的原因.

不点 发表于 2016-7-11 08:29:27

貌似当Makefile 存在时,应该直接敲入 make 命令进行编译,不需要执行 build 脚本。

Unix 的系统,通常都不能有回车符,只能用换行符。原来的代码没问题,是你的下载软件在下载时自动添加的回车符。

用 svn 或 git 命令下载源代码就不会添加回车符。用 ftp 命令下载有可能自动添加回车符。
页: [1]
查看完整版本: grub4dos_dev环境下 编译外部命令出错