如何指定 scons 中使用的 linux 程序集的命令行参数和参数?
How to specify command line args and liker of linux assembly used in scons?
我在写汇编语言,程序是这样的:
.data
.equ b,3
.text
.globl _start
_start:
movl ,%ebx
movl $b,%ecx
movl ,%eax
int [=11=]x80
我是在ubuntu 64位版本下编译的。我希望获得 32 位版本,所以在 shell 下我可以这样做:
$ as my.s -32
$ ld a.out -o my
好的,没问题。我希望使用 scons 来管理这个过程,所以我有 SConstruct:
Program('my.s')
这将首先使用'as my.s -o my.o'和'gcc my.o -o my'进行编译,并报告'_start'重定义的错误。
我的问题是:
How can I pass '-32' option to make sure I compile out 32bit version object file?
How can I specify the linker to be 'ld' but not 'gcc', to make sure I can use '_start' as entry point in my assembly source file?
为了将标志传递给汇编器,ASFLAGS 应该可以工作。
为了将标志传递给链接器,LINKFLAGS 应该可以工作
要设置链接器使用哪个可执行文件,LINK(或 SHLINK)应该可以解决问题。
联机帮助页中列出了所有这些:http://scons.org/doc/production/HTML/scons-man.html
以下可能对您有用:
env=Environment(tools=['as','gnulink'])
env['ASFLAGS'] = '-32'
env['LINK'] = 'ld'
env.Program('my',['my.s'])
我在写汇编语言,程序是这样的:
.data
.equ b,3
.text
.globl _start
_start:
movl ,%ebx
movl $b,%ecx
movl ,%eax
int [=11=]x80
我是在ubuntu 64位版本下编译的。我希望获得 32 位版本,所以在 shell 下我可以这样做:
$ as my.s -32
$ ld a.out -o my
好的,没问题。我希望使用 scons 来管理这个过程,所以我有 SConstruct:
Program('my.s')
这将首先使用'as my.s -o my.o'和'gcc my.o -o my'进行编译,并报告'_start'重定义的错误。
我的问题是:
How can I pass '-32' option to make sure I compile out 32bit version object file?
How can I specify the linker to be 'ld' but not 'gcc', to make sure I can use '_start' as entry point in my assembly source file?
为了将标志传递给汇编器,ASFLAGS 应该可以工作。
为了将标志传递给链接器,LINKFLAGS 应该可以工作
要设置链接器使用哪个可执行文件,LINK(或 SHLINK)应该可以解决问题。
联机帮助页中列出了所有这些:http://scons.org/doc/production/HTML/scons-man.html
以下可能对您有用:
env=Environment(tools=['as','gnulink'])
env['ASFLAGS'] = '-32'
env['LINK'] = 'ld'
env.Program('my',['my.s'])