首页
社区
课程
招聘
谁知道GCC编译驱动的链接参数
2007-1-18 11:28 4876

谁知道GCC编译驱动的链接参数

2007-1-18 11:28
4876
收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 70
活跃值: (110)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
采臣·宁 1 2007-1-19 16:23
2
0
#
# FuckNp for Windows NT Makefile
#
OBJECTS = fucknp.o modules.o ntoskrnl.o hook.o
CROSS_PREFIX=

TARGET = fucknp.sys

CFLAGS = -O2 -I.

all: $(OBJECTS) $(TARGET)

clean:
        rm -f *.o $(TARGET)

%.o: %.c
        $(CROSS_PREFIX)gcc $(CFLAGS) -c $< -o $@

%.coff: %.rc
        $(CROSS_PREFIX)windres -i $< -o $@

%.a: %.def
        $(CROSS_PREFIX)dlltool -d $< -l $@ --kill-at

$(TARGET): $(OBJECTS)
        $(CROSS_PREFIX)gcc -Wl,--base-file,base.tmp -Wl,--entry,_DriverEntry@8 \
            -nostartfiles -nostdlib -o junk.tmp $(OBJECTS) -lntoskrnl -lhal
        rm junk.tmp
        $(CROSS_PREFIX)dlltool --as=as --dllname $(TARGET) --base-file base.tmp \
                --output-exp temp.exp
        rm base.tmp
        $(CROSS_PREFIX)gcc -Wl,--subsystem,native -Wl,--image-base,0x10000 \
            -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 \
            -Wl,--entry,_DriverEntry@8  -Wl,--stack,0x40000 -Wl,temp.exp \
            -mdll -nostartfiles -nostdlib -o $(TARGET) \
            $(OBJECTS) -lntoskrnl -lhal
        rm temp.exp
        rm *.o
雪    币: 70
活跃值: (110)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
采臣·宁 1 2007-1-19 16:25
3
0
这是我的一个MAKEFILE。请更改:
OBJECTS = fucknp.o modules.o ntoskrnl.o hook.o
这一行为你的模块名

你也可以在ReactOS工程源代码中找到更方便的编译环境和DDK!
雪    币: 217
活跃值: (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
linestyle 2007-1-19 18:16
4
0
学习了
有没有现成的工程,让我们菜鸟学一下,从来没有用过gcc编过驱动啊
雪    币: 235
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lemony 1 2007-1-19 22:17
5
0
我不太习惯用makefile

我已经找到解决方法了

入口函数的声明
extern "C" __declspec (dllexport) NTSTATUS DriverEntry(IN PDRIVER_OBJECT  DriverObject,IN PUNICODE_STRING  RegistryPath);

编译文件
gcc -c Main.cpp

ld Main.o --subsystem=native -s -o Main.sys

编译出来的文件可以加载成功,也可以看到DbgPrint的信息

但是StartService不返回。。
游客
登录 | 注册 方可回帖
返回