我的项目结构如下:
.
├── build
├── src
| ├── rbpi
| | └── gpio.h
| ├── boot.c
| ├── boot.s
| └── kernel.c
└── linker.ld
这是一个简单的覆盆子pi内核,使LED闪烁! 我目前使用一个简单的bat文件,其中包含以下内容:
arm-none-eabi-gcc -g -O0 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -nostartfiles -Wl,-T,linker.ld src/kernel.c src/boot.c src/boot.s -o build/kernel.elf
arm-none-eabi-objcopy build/kernel.elf -O binary build/kernel7.img
由于我将向此项目添加更多文件,因此我必须将每个文件追加到我的“buildscript”中
如果可能,我想使用makefile
。
如果我想要以下“规则”,我的makefile应该如何?
*.elf
目录中的所有*.img
和build
文件。*.c
目录中的所有*.s
和src
个文件。kernel.elf
文件输出到build
目录。linker.ld
。objcopy
生成二进制文件。答案 0 :(得分:4)
一个典型的INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 20, 'f2z7ddw7r6bb7gfy', 'segment00018.ts', 10.000000000000, '00:03:11');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 21, 'f2z7ddw7r6bb7gfy', 'segment00019.ts', 10.000000000000, '00:03:21');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 22, 'f2z7ddw7r6bb7gfy', 'segment00020.ts', 6.066667079926, '00:03:31');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 23, 'f2z7df1bb66be7h3', 'segment00000.ts', 10.000000000000, '00:03:38');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 24, 'f2z7df1bb66be7h3', 'segment00001.ts', 10.000000000000, '00:03:48');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 25, 'f2z7df1bb66be7h3', 'segment00002.ts', 10.000000000000, '00:03:58');
INSERT INTO `lista_m3u8` (`tipo`, `orden`, `contenido`, `segmento`, `extinf`, `ini`) VALUES ('radio', 26, 'f2z7df1bb66be7h3', 'segment00003.ts', 10.000000000000, '00:04:08');
可能看起来像......等待有关于GNU Make的文档,这里有一个很好的简单Makefile:
http://www.gnu.org/software/make/manual/make.html#Simple-Makefile
所以对你来说,一个简单的开始可能是:
$actual = sql("SELECT orden, extinf, contenido, segmento, ini FROM lista_m3u8 WHERE tipo = 'radio' AND ini >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MINUTE),'%H:%i:%s') AND ini <= DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 3 MINUTE),'%H:%i:%s') ORDER BY orden ASC");
$sale = '#EXTM3U'.PHP_EOL;
$sale .= '#EXT-X-VERSION:3'.PHP_EOL;
$sale .= '#EXT-X-MEDIA-SEQUENCE:'.($actual['data'][$actual['total']-1]['orden'] - $actual['total']).PHP_EOL;
$sale .= '#EXT-X-TARGETDURATION:10'.PHP_EOL;
$contenido = $actual['data'][0]['contenido'];
foreach($actual['data'] as $k=>$v) {
if($v['contenido'] != $contenido) { $sale .= "#EXT-X-DISCONTINUITY".PHP_EOL; }
$sale .= "#EXTINF:".$v['extinf'].",".PHP_EOL;
$sale .= S3URL("audio-bucket",$v['contenido']."/".$v['segmento'],180).PHP_EOL;
$contenido = $v['contenido'];
}
header("Content-type: application/x-mpegURL");
echo $sale.PHP_EOL;
(小心,食谱必须从一个标签开始,而不是像这里这样的四个空格,这对于了解你的文件很重要,因此复制粘贴将不起作用。)
在编译之前,您实际上不需要删除elf和img文件,这是GNU Make角色,根据文件修改时间知道是否必须重建。
在这里工作:
Makefile
你真的应该看看非常好的文档:http://www.gnu.org/software/make/manual/make.html你将无法在stackoverflow上询问你需要对你的makefile做什么修改,从这个“bootstrap”开始makefile“您应该能够修改它以逐步学习,并以文档作为参考。