Ошибка выполнения нескольких файлов C в Petalinux

Я новичок в Xilinx Petalinux SDK 2016.4. У меня была успешно установлена ​​операционная система linux на целевой плате Zybo-Z7. Я также создал приложение helloworld, и до сих пор все в порядке. В настоящее время я хочу протестировать свое приложение с именем test.c с одним дополнительным заголовком и C-файлом (new.c, new.h). Файлы test.c, new.c, new.h расположены по пути:

/ $ Petalinux-проект-каталог / спецификация проекта / мета-пользователь / рецепты-приложения / тест / тест

test.c имеет код:

#include <stdio.h>
#include "new.h"

int main(int argc, char **argv)
{
        printf("Hello World!\n");

        return 0;
} 

new.c имеет следующий код:

#include "new.h"

void fun(void)
{
    printf("my function!\n");

}

new.h имеет следующий однострочный код:

#include <stdio.h>

Makefile имеет следующее содержимое:

APP = test

# Add any other object files to this list below
APP_OBJS = test.o
APP_OBJS += new.o


all: build

build: $(APP)

$(APP): $(APP_OBJS)
    $(CC) $(LDFLAGS) -o $@ $(APP_OBJS) $(LDLIBS)

clean:
    $(RM) $(APP) $(OBJS)

наконец, файл bitbake test.bb:

#
# This file is the test recipe.
#

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

SRC_URI = "file://test.c \
           file://new.c \
           file://new.h \
           file://Makefile \
          "

S = "${WORKDIR}"

do_compile() {
         oe_runmake
}

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

затем я попытался создать приложение, набрав команду:

petalinux-build -c test -x build 

но я получаю следующее сообщение об ошибке в log.do_configure:

DEBUG: Executing python function sysroot_cleansstate
DEBUG: Python function sysroot_cleansstate finished
DEBUG: Executing shell function do_configure
NOTE: make clean
make: *** No rule to make target 'clean'.  Stop.

petalinux-build -c test -x build 
ERROR: oe_runmake failed


ERROR: Function failed: do_configure (log file is located at /$petalinux-project-directory/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/test/1.0-r0/temp/log.do_configure.7230)

у меня в консоли было следующее:

    petalinux-build -c test -x build
    [INFO] building test
    [INFO] sourcing bitbake
    INFO: bitbake test -c build
    Loading cache: 100% |###########################################| ETA:  00:00:00
    Loaded 2942 entries from dependency cache.
    Parsing recipes: 100% |#########################################| Time: 00:00:02
    Parsing of 2326 .bb files complete (2292 cached, 34 parsed). 2941 targets, 196 skipped, 0 masked, 0 errors.
    NOTE: Resolving any missing task queue dependencies
    NOTE: Preparing RunQueue
    NOTE: Checking sstate mirror object availability (for 38 objects)
    NOTE: Executing SetScene Tasks
    NOTE: Executing RunQueue Tasks
    ERROR: test-1.0-r0 do_configure: oe_runmake failed
    ERROR: test-1.0-r0 do_configure: Function failed: do_configure (log file is located at /$Petalinux-project-dir/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/test/1.0-r0/temp/log.do_configure.7230)
    ERROR: Logfile of failure stored in: /$Petalinux-project-dir/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/test/1.0-r0/temp/log.do_configure.7230
    Log data follows:
    | DEBUG: Executing python function sysroot_cleansstate
    | DEBUG: Python function sysroot_cleansstate finished
    | DEBUG: Executing shell function do_configure
    | NOTE: make clean
    | make: *** No rule to make target 'clean'.  Stop.
    | ERROR: oe_runmake failed
    | ERROR: Function failed: do_configure (log file is located at /$Petalinux-project-dir/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/test/1.0-r0/temp/log.do_configure.7230)
    ERROR: Task 5 (/$Petalinux-project-dir/project-spec/meta-user/recipes-apps/test/test.bb, do_configure) failed with exit code '1'
    NOTE: Tasks Summary: Attempted 610 tasks of which 605 didn't need to be rerun and 1 failed.
    Waiting for 0 running tasks to finish:

    Summary: 1 task failed:
      /$Petalinux-project-dir/project-spec/meta-user/recipes-apps/test/test.bb, do_configure
    Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
    ERROR: Failed to build test

Я пробовал: https://forums.xilinx.com/t5/Embedded-Linux/How-to-build-when-multiple-source-files-in-rootfs-of-petalinux/td-p/780949 и https://www.xilinx.com/support/answers/67189.html, а также аналогичная проблема Как собрать несколько исходных файлов в rootfs во встроенном linux? но это не работает!

не могли бы вы мне помочь?


person A. S    schedule 26.09.2018    source источник
comment
Я сделал еще одну попытку изменить make-файл следующим образом: APP = test ..... но также app test.c ничего не дает по цели. new.c не отображается на цели # Добавьте любые другие объектные файлы в этот список ниже APP_OBJS = test.o APP_OBJS + = new.o .PHONY: все сборка очищается все: сборка build: $ (APP) $ (APP): $ (APP_OBJS) $ (CC) $ (LDFLAGS) -o $ @ $ (APP_OBJS) $ (LDLIBS) очистить: $ (RM) $ (APP) $ (OBJS)   -  person A. S    schedule 27.09.2018


Ответы (1)


В вашем make-файле нет цели clean. Пытаться:

APP := test

APP_OBJS := test.o new.o

.PHONY: all build clean

all: build

build: $(APP)

$(APP): $(APP_OBJS)
    $(CC) $(LDFLAGS) -o $@ $(APP_OBJS) $(LDLIBS)

clean:
    $(RM) $(APP) $(OBJS)
person Mike Kinghan    schedule 26.09.2018
comment
спасибо за Ваш ответ. Я попробую ваш ответ сейчас и дам свой отзыв - person A. S; 27.09.2018
comment
@ A.SДобро пожаловать в Stackoverflow! Здесь можно задать один вопрос за другим. Если решение проблемы, которое вы (изначально) опубликовали, обнаруживает новую проблему, и вы не можете решить ее самостоятельно, вам следует опубликовать новый вопрос. Вам не следует менять свой вопрос на другой, добавляя полезные ответы, делая их неактуальными. См. Что мне делать, когда кто-то отвечает на мой вопрос? - person Mike Kinghan; 27.09.2018
comment
@ A.S Вы можете вернуться к версии 1, если хотите. - person Mike Kinghan; 27.09.2018
comment
Извините за изменение исходного сообщения. Теперь исходный пост вернулся. хорошо, я попробовал ваше предложение. Хорошая новость в том, что ошибка исчезла. Но когда я загружаю операционную систему linux на целевую плату Zybo, приложение test.c ничего не дает, когда я пытаюсь его реализовать. Также приложение new.c не загружается в образ Linux. Я также удалил третью строку в форме do_install install -m 0755 new $ {D} $ {bindir}, потому что приложение new.c загружается по тому же пути, что и приложение test.c - person A. S; 27.09.2018
comment
@ A.S Благодарим вас за откат сообщения :) Чтобы иметь возможность получить помощь по новой проблеме, вы должны задать еще один вопрос, внимательно представив информацию, которую читатели могут использовать для изучения. - person Mike Kinghan; 27.09.2018