2016-11-01 22 views
1

我一直在使用Yocto爲ARM開發板創建Linux版本。在生成root fs期間向Yocto添加新配方失敗

我一直在手動交叉編譯添加應用程序。現在我們正在一個我們想要一個很好的集成版本的地方,所以我開始向yocto添加自定義食譜。

我一直在努力與ARM構建(具有相同代碼的x86構建看起來很好)。

即使是一個基本的 'Hello World' 幾乎切斷,並從開發手冊粘貼不工作(http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#new-recipe-writing-a-new-recipe

這裏是食譜:

SUMMARY = "Simple helloworld application" 
SECTION = "examples" 
LICENSE = "MIT" 
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" 

RPROVIDES_${PN} = "helloworld" 

FILES_${PN} += "${bindir}" 

SRC_URI = "file://helloworld.c" 

S = "${WORKDIR}" 

do_compile() { 
     ${CC} helloworld.c -o helloworld ${LDFLAGS} 
} 

do_install() { 
     install -d ${D}${bindir} 
     install -m 0755 helloworld ${D}${bindir} 
} 

以下是錯誤:

ERROR: helloworld not found in the base feeds (smarc_samx6i cortexa9t2hf-vfp-neon-mx6qdl cortexa9hf-vfp-neon-mx6qdl cortexa9t2hf-vfp-neon cortexa9t2hf-vfp cortexa9hf-vfp-neon cortexa9hf-vfp armv7at2hf-vfp-neon armv7ahf-vfp-neon armv7at2hf-vfp armv7ahf-vfp armv6thf-vfp armv6hf-vfp armv5tehf-vfp armv5ehf-vfp armv5thf-vfp armv5hf-vfp noarch any all). 
ERROR: Function failed: do_rootfs 

任何有關什麼會導致此錯誤的建議?

該軟件包沒有正確構建;這個問題似乎孤立於爲rootfs找到它。

謝謝!

編輯: 我有一個似乎工作的解決方案,雖然它不是理想的長期。

將IMAGE_INSTALL下的包名從helloworld更改爲helloworld-0.0.1即可解決問題。很顯然,我寧願不在最高級別的配方中對每個軟件包的版本進行硬編碼,其他軟件包也不需要這樣做,所以希望還有另一種解決方案。

編輯2: 重命名配方並刪除版本字符串也解決了問題。再一次,這看起來並不理想。

+0

你在哪裏儲存了你的食譜(哪個目錄)以及它的文件名是什麼? – h0ch5tr4355

+0

我在源代碼中創建了一個'meta-test'位置,並在其下創建了一個'配方測試'位置。元測試有一個layers.conf。 – Dan

+0

你給bblayers.conf添加了'meta-test'嗎? – h0ch5tr4355

回答

0

好的,經過一些進一步的測試後,我發現這是一個配方的命名問題。

它被命名爲helloworld-0.0.1.bb(與我放在一起的其他食譜相同的格式驅使我嘗試這個簡單的測試)。

如果有其他人遇到此問題,只需用'_'替換' - '即可解決此問題。

1

1.Rename你的食譜名稱,如hello-0.1.bb到hello_0.1.bb

2.添加以下行最後只有:

FILES_${PN} = "${bindir}/*" 

Abvoe線可以幫助您複製您的二進制文件根文件系統。

相關問題