Tiny Core Linux创建扩展

原文地址: http://wiki.tinycorelinux.net/wiki:creating_extensions


创建扩展

本文假设用户熟悉命令行。依据下列指导,用户将:

创建临时文件和目录

在临时目录输出最终结果

使用makesquash文件工具

要求:

源代码和其依赖的库

compiletc扩展(注:编译工具,如makegcc等)

squash文件工具扩展


#要求的信息

包维护者(特别是JW)在论坛发表最新创建扩展的参考。您需要阅读最新的参考提交的FAQ

请参考 iconmenuinfo,获取信息:创建图标,菜单项,安装脚本,.info.dep文件。

打包核心模块:帖子

Tiny Core v2.4+ 2.4版本以上), 使用扩展是 .tcz格式,别的格式不宜使用。

Tiny Core v2.7+ 2.7版本以上,现在到4.x),只使用.tcz格式。没有文件名扩展可变类型。如果您不明白...感谢上帝,只是用.tcz作为创建文件的结尾。


#简略步骤

6大步骤:

configure/make/make install

分离出 文档,本地化信息和开发文件

把所有东西压缩到您的扩展

写并放置支持文件:dep, info, list, and md5 hash

使用bcrypt/tar进行文件加密和打包

邮送给Tiny Core团队

许多工作可以脚本化,而且回报大,值的这么做。例如, 步骤3-6可以通过tcztools(非官方TC工具)自动实现。


#安装

使用Compiletc扩展编译您的源代码 它包括常用的工具,所有的tcgcc, make等)设置。如果您遇到奇怪的make错误,可以尝试corutils扩展。Tar错误?获取并安装tar扩展。以此类推。

注意,TC的标准安装prefix(前缀)是 /usr/local

建议的编译标志(兼容性考虑):

export CFLAGS="-march=i486 -mtune=i686 -Os -pipe"

export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe"

export LDFLAGS="-Wl,-O1"

Ps: 注意l1


如果您希望试着取得更小尺寸的C++程序,可以试着在CXXFLAGS上加 "-fno-exceptions -fno-rtti"。仅使用C++应用程序,库应该和上面的CFLAGS使用相同的标志。


不允许使用的标志(性能好,但在别的机器上可能不会工作):

"-march=native -mtune=native"


更多编译标志信息请参考:

 http://www.gentoo.org/doc/en/gcc-optimization.xml 

 http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html

不再需要设置pkg-config路径(export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig),在最新的版本中缺省路径是/usr/{local,}/{lib,share}/pkgconfig

Ps: 花括号,表示可选? 正则用法。


配置和编译一个包 package_name.tar.bz2 的例子步骤:


tar xjvf package_name.tar.bz2

cd package_name

./configure --prefix=/usr/local

make -j3


注:j3代表2处理器系统。-jN的一般准则,N的值比可用处理器的数目大1

Ps:双核是不是双处理器?


您的应用不支持DESTDIR时,需要创建/更新一个日期标记。

touch /tmp/mark  

Pstouch是修改文件时间戳的命令


安装应用:

make DESTDIR=/tmp/package install

Ps

DESTDIR,意思是目标目录。

(需要时,参考后面“DESTDIR失败时”)


注意:有的包支持 make install-strip,它会剥离跟踪信息。 Jason W 建议如此做以节省空间他也提出,您可以在make以后如此做:

find . | xargs file | grep "executable" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null||find . | xargs file | grep "shared object" | grep ELF | grep "not stripped" | cut -f 1 -d : | xargs strip -g 2> /dev/null


tar打包之前,在您的包目录中运行上述命令。 Busybox 的 "xargsss"不支持 "file "参数,因此它可能失败。 您需要保持 compiletc扩展的装载,以得到完整 "xargsss"版本。


#创建 a.tcz


如果程序支持DESTDIR(大部分支持),文件会被安装到 /tmp/package,但是会为/usr/local 配置。这种情况,创建扩展如下:


cd /tmp

mksquashfs package program_name.tcz

cd /tmp/package


下一步,创建扩展中的文件列表,它会和扩展一起提交。


find usr -not -type d > program_name.tcz.list


最后,删除/tmp/package中的大量。

rm -rf  usr

Ps:我都是拿XFE进去删


#DESTDIR失败时


基本上所有的应用都支持在make行(见上)使用DESTDIR。但是,也有些不支持。它会安装到root的子目录中,而不是tmp.

One possible solution from the forums, by Jason W使用 a time stamp, find, and tar. 

同上,设置./configure的安装前缀为正常。 然后在make之后,确保创建一个时间戳。使用find列出最新安装的文件,然后用tar收集那些文件。


./configure --prefix=/usr/local

make

touch /tmp/mark #in case DESTDIR fails

make install DESTDIR=/tmp/pkg #DESTDIR may not work ...

find /usr/local -newer /tmp/mark -not -type d > /tmp/list

tar -T /tmp/list -czvf /tmp/someapp.tar.gz


TCTiny Core缩写)2.4以前的版本,您需要解压tar文件,然后用mksquashfs 创建您的扩展:


mkdir /tmp/pkg

cd /tmp/pkg

tar -xf /tmp/someapp.tar.gz #'install' the extension in tmp

cd /tmp

mksquashfs pkg/ someapp.tcz


使用 touch/find -newer方法,需要当心。有些文件仅被installer从源包拷贝,像配置文件,头文件,脚本,文档文件,图像等,但有原始日期,因此它们不会被检测到。检查installer信息!


#添加自定义启动脚本


如果包第1次安装或者启动时挂载,您想做一些事情,那么创建shell脚本 /tmp/package/usr/local/tce.installed/package_name

随从一个好的模板的做法,先把 /tmp/package/usr/local/etc/package_name.conf 重命名为package_name.conf.sample, 您的脚本总是检测/usr/local/etc/package_name.conf 是否存在,如果不存在,把/usr/local/etc/package_name.conf.sample 拷贝成它。这样做,应用的配置文件在自然路径里是完全可写的,而不必求助于您自己检测的古怪路径。

例如:


cd /usr/local/etc/

[[ ! -e nano.rc ]] && cp -p nano.rcsample nano.rc


警告:如果您不这么做,这些配置文件将会是只读的。

请阅读  iconmenuinfo wiki page 获取创建 wbar icons, menu entries, setup scripts, .info and .dep files. 的信息。


在您进行前的重要步骤:

chown -R root:staff /tmp/package/usr/local/tce.installed

chmod -R 775 /tmp/package/usr/local/tce.installed


#测试


彻底检验您的新扩展,启动TC后手动装载它们,使用伪代码:

base norestore


装载您的扩展,检查:

(1)所有的依赖组件都装载?

(2)菜单项目工作?Wbar/desktop图标工作?

(3)程序实际运行了?

从您的.dep文件忽略一个需要的依赖组件,是很容易的。使用 base norestore去做,并且特别检查扩展的依赖组件。

如果您计划提交您的扩展到仓储的包含中,你也应当运行 extension audit script 。这个脚本目前可用,submitqc.tcz扩展实现它。(记住,如果您想从论坛下载这个脚本,您需要登录来看到这个链接。)


#提交



#分离

更小的扩展减小Tiny Core 中的“肿胀”。 帮助:

把翻译和其他的本地化数据移动到一个本地化扩展(myprogram-locale.tcz

把文档和帮助文件移动到一个Doc扩展(myprogram-doc.tcz

不要把文档包含进扩展,使用info文件列出官方在线文档。


#要求的文件

提交必须包含:

扩展文件 (.tcz)

内容清单 (.tcz.list)

MD5检验和(.tcz.md5.txt)

描述扩展的内容的信息文件(.tcz.info) - 内容是标准化的Visit the repository for examples.

必要的依赖组件列表 (.tcz.dep)

若源代码遵守GPL授权,也包含这个源代码。


不要求,但是推荐,您在一个文本文件中包含一些另外的build指令,以便未来参考,并说明这样的事情,如建造这个包需要哪个扩展,什么编译标志被使用。这可以做到一个“build-dep”文件中。例如, urxvt的建造依赖文件是这个样子:

Required extensions to build:

Xorg-7.4-dev

Xlibs_support

Notes:

256-color patch applied

Additional configure options:

  * -enable-xft

  * -with-codesets=none

  * -disable-afterimage

  * -disable-xterm-scroll

  * -disable-next-scroll

  * -disable-perl

这只是个举例,格式可以是您希望的。 再次,这不是要求的,但是有用的练习,在您更新扩展到一个新的发行时,它非常有用。


#发送


您曾运行 extension audit script 测试您的扩展? 是的话,创建一个档案,并加密(bcrypt),使用密码 tinycore,以避免在用GMail时的任何问题。例如,如果所有要求的文件在一个目录,命令看起来是这个样子:

tar zcf extension.tar.gz *

bcrypt extension.tar.gz

把结果文件 extension.tar.gz.bfe 发送到 tcesubmit _at_ gmail _dot_ com. 

更多细节,阅读帖子  guildelines forum thread 。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值