В доступе отказано Привет, мир Yocto/Openembedded
Я хочу кросс-компилировать с Yocto простой C Hello World для моего Colibri iMX7 от Toradex. Дерево моей мета hellow выглядит следующим образом:
meta-hellow
├── conf
│ └── layer.conf
└── recipes-myhello
└── files
└── helloworld.c
└── README.TXT
└── myhello_0.0.bb
helloworld.c:
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hello World!\n");
return 0;
}
myhello_0.0.bb вдохновлен этим:
DESCRIPTION = "Hello world program"
#To prevent the LICENSE field not set error
LICENSE = "CLOSED"
PR = "r0"
SRC_URI = "file://helloworld.c \
file://README.txt"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/helloworld.c -o helloworld
}
do_install() {
install -m 0755 -d ${D}${bindir} ${D}${docdir}/helloworld
install -m 0644 ${S}/helloworld ${D}${bindir}
install -m 0644 ${WORKDIR}/README.txt ${D}${docdir}/helloworld
}
Я добавил свой слой в мой bblayers.conf примерно так ${TOPDIR}/../layers/meta-hellow \
и добавил пакет в local.conf так IMAGE_INSTALL_append = "myhello"
,
Но проблема у меня, после установки его на мою плату с opkg install
, как следует:
root@colibri-imx7:~# myhello
-sh: /usr/bin/myhello: Permission denied
Почему есть Permission denied
так как я root?
Спасибо за помощь!
1 ответ
Решение
install -m 0644 ${S}/helloworld ${D}${bindir}
Вы указываете программе установки, чтобы ни у кого не было разрешения на выполнение: попробуйте вместо этого "0755".