微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 121|回复: 0

安卓内核驱动编译方法

[复制链接]

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-11-27 20:15:46 | 显示全部楼层 |阅读模式
在开始以前,首先我们需要做一些事情。
下载完goldfish后,去到这个文件夹goldfish/arch/arm/configs/goldfish_armv7_defconfig然后加这几行。


这是为了让内核可以动态加载内核驱动。但是加了这几行后再编译的话就会出问题,所以需要删掉几行设定。


为了让设置清晰点,加这么一行说明下。


设置完这些基本上就ok了。
首先我们要编译的一种是可动态加载的内核驱动。
去到 goldfish/drivers 文件夹创建一个文件夹。就叫helloworld吧。不过其实对于这种动态加载的内核驱动,不一定需要在这个drivers文件夹下面,因为最后只要得到那个ko模块就好了。
在这个文件夹里面,我们创建了Makefile和hello.c文件。
Hello.c文件内容如下。


Makefile文件内容如下。


然后在helloworld文件夹里面执行make就可以了。你可以看到那里出现了”hello.ko”文件。开启你的模拟器,将hello.ko 给push到/data/local/tmp下面,采用如下命令加载写在驱动就可以看到输入和输出了。


还有其他的驱动,整个过程需要花费不少时间,得慢慢搜索,后续在分享,感兴趣的朋友也可以私下探讨祥聊。
<hr/> edtFileName: TEdit;
    procedure edtFileNameKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure IECache1Entry(Sender: TObject; var Cancel: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure DeleteEntryBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.IECache1Entry(Sender: TObject; var Cancel: Boolean);
begin
  listbox1.Items.Add(IECache1.EntryInfo.SourceUrlName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  IECache1.SearchPattern := spAll;
  IECache1.RetrieveEntries(0);
  EmbeddedWB1.AssignEmptyDocument;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IECache1.SearchPattern := spAll;
//e.g.: set SearchPattern:=spCookies if you only want to delete cookies
  IECache1.ClearAllEntries;
  Listbox1.Items.Clear;
  IECache1.SearchPattern := spAll;
  IECache1.RetrieveEntries(0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  Listbox1.Items.BeginUpdate;
  try
  Listbox1.Items.Clear;
  with IECache1 do
  begin
    case RadioGroup1.ItemIndex of
      0: SearchPattern := spAll;
      1: SearchPattern := spCookies;
      2: SearchPattern := spHistory;
      3: SearchPattern := spUrl;
    end;
    RetrieveEntries(0);
  end;
  finally
    Listbox1.Items.EndUpdate;
  end;
end;

function DTString(DT: TDatetime): string;
begin
  if DT < 0 then
    Result := ''
  else
    Result := DateTimeToStr(DT);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  EmbeddedWB1.Wait;
  if Listbox1.Items.Count > 1 then
    IECache1.GetEntryInfo(ListBox1.Items.Strings[ListBox1.ItemIndex]);
  with IECache1.EntryInfo do
  begin
    if ((pos('.htm', Localfilename) > 0) or (pos('.gif', Localfilename) > 0) or (pos('.jpg', Localfilename) > 0))
      and Checkbox1.checked then
      EmbeddedWB1.Go(LocalFileName);
    Label1.Caption := 'Hitrate: ' + InttoStr(HitRate);
    Label2.Caption := 'FileSize: ' + InttoStr(FSize);
    Label3.Caption := 'Last access: ' + DTString(LastAccessTime);
    Label4.Caption := 'Last modified: ' + DTString(LastModifiedTime);
    Label5.Caption := 'Expire: ' + DTString(ExpireTime);
    edtFileName.Text := LocalFileName;
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Listbox1.SetFocus;
  listbox1.ItemIndex := 1;
  Listbox1Click(Sender);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  with OpenDlg do
  begin
    filter := 'Internet files|*.htm;*.html;*.gif;*.jpg';
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-22 13:06 , Processed in 0.078028 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表