当前位置: 技术问答>linux和unix
GCC 怎么修改启动函数
来源: 互联网 发布时间:2016-10-28
本文导语: 其实是想改mingw的。但是我想linux下也一样吧。 5个问题 1、启动函数就是程序的入口函数(调用main那个)在那个库里边?怎么让gcc不去链接它。 2、(1)中那个库除了启动函数还有什么函数。禁用了会不会有什么副作...
其实是想改mingw的。但是我想linux下也一样吧。
5个问题
1、启动函数就是程序的入口函数(调用main那个)在那个库里边?怎么让gcc不去链接它。
2、(1)中那个库除了启动函数还有什么函数。禁用了会不会有什么副作用?
3、怎么指定其他函数为入口函数?
4、我想永久的改启动函数。怎么在不改gcc参数开关的情况下修改?(gcc应该有一个默认配置文件吧?)
5、启动函数那个库不算是C++标准库吧?或者说 STL标准库没这个函数吧?
谢谢大家。
5个问题
1、启动函数就是程序的入口函数(调用main那个)在那个库里边?怎么让gcc不去链接它。
2、(1)中那个库除了启动函数还有什么函数。禁用了会不会有什么副作用?
3、怎么指定其他函数为入口函数?
4、我想永久的改启动函数。怎么在不改gcc参数开关的情况下修改?(gcc应该有一个默认配置文件吧?)
5、启动函数那个库不算是C++标准库吧?或者说 STL标准库没这个函数吧?
谢谢大家。
|
$ ld --verbose
GNU ld version 2.18.50.0.9-8.fc10 20080822
Supported emulations:
elf_i386
i386linux
elf_x86_64
using internal linker script:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
"elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
GNU ld version 2.18.50.0.9-8.fc10 20080822
Supported emulations:
elf_i386
i386linux
elf_x86_64
using internal linker script:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
"elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
|
1 用 -nostartfiles 选项
3 用 ld 的选项:--entry=xxx
比如
gcc -c hello.c -o hello.o
gcc -o hello hello.o -Wl,--entry=_hello -nostartfiles
3 用 ld 的选项:--entry=xxx
比如
gcc -c hello.c -o hello.o
gcc -o hello hello.o -Wl,--entry=_hello -nostartfiles
|
ld会指定一个入口的符号,默认是_start,该入口在c run time library里,它里面会构造main的那几个参数,然后调用main.
|
这个真不容易,帮顶。
|
帮顶