Windows下编译项目 ckcore ckfilesystem

 

该项目是用来生成iso镜像文件的,类似于UltraISO,好处就是开源滴,

我为什么要跟它们打交道,说来也简单:我们一开始用UltraISO给我们的操作系统发行版制作启动光盘,但是发现这样做好的光盘头部总是不能被我们的biso(UEFI BISO)识别,但是因为系统的启动过程是把若干文件镜像加载到内存,然后从biso中获取控制权,我们要解决的就是如何识别这几个文件,我的前任们提出了一个比较简单的方法,那就是放弃从光盘信息头中提取文件的思路,直接在制作光盘时把文件的起始地址(用一个叫逻辑扇区地址(LBA)的东西来表示)以及偏移写入光盘的指定位置(这个位置可以保证不会破坏光盘数据,比如,是规范中约定预留部分),于是我们每次制作光盘的流程如下:首先用UltraISO制作原始版本,并查看相应文件的LBA以及长度,然后WinHex改写光盘约定位置的内容。每次人工来改虽说不是麻烦,但毕竟不符合程序员精神。

几个注意点:

   ckcore、ckfilesystem编译成Lib文件,src/sample路径下有一个 main.cc ,是一个简单的udf 写录程序,编译选项一定要统一, 例如我们此处选 MD(多线程静态库),那么库应用程序应该也一致;

  ckfilesystem 依赖 ckcore,记得导入lib,可以在链接选项中附加库,也可以#program comment(lib,’yourlib.lib’) 

  项目是跨平台的,在windows VS下编译时,记得选择 Windows标准库,注意不要选择 UNICODE字符 ,否则1)会产生大量链接错误  2)因为字符编码问题无法识别目录名,原因可以分析 ckcore/type.hh ;

  还需要注释掉filetree.cc 中涉及到 的??wstring 类型与string的不匹配??(对程序逻辑的影响还未分析)

  

转载于:https://www.cnblogs.com/diving/archive/2012/09/20/2696142.html

posted on   lydstory  阅读(17)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2022-08-17 牛客刷题
2022-08-17 uipath
2020-08-17 config.status: error: cannot find input file: `Makefile.in'
2020-08-17 AC_LIB_LINKFLAGS_BODY(iconv)'
2020-08-17 cairo替换不对系统不断重启
2020-08-17 cairo_pattern_mesh_begin_patch bug问题
2020-08-17 tar.xz 解压

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示