2016-08-17 1 views
1

Je suis en train d'exporter un logiciel openwrt et je suis en mesure de générer le IPK mais le fichier compilé me ​​donne toujours cette erreurErreur lors de l'exécution programme compilé croisée pour openwrt

-Ash: scanReportProbe : pas trouvé

J'ai tout essayé mais je ne suis pas capable de le faire fonctionner. Pour être complet ce que je l'ai fait pour préparer l'environnement:

git clone git://github.com/openwrt/openwrt.git 
cd openwrt 
./scripts/feeds update -a 
./scripts/feeds install -a 
make defconfig 
make prereq 
make menuconfig 
    [here i selected the package with the M and saved the configuration] 
make tools/install 
make toolchain/install 
make package/scanReport_probe/compile 

Je ne sais pas de pour corriger cette erreur si j'ai besoin de soupçon de solution.

Je ne pense pas que l'erreur est dans le code mais casse est nécessaire c'est mon programme: structure de fichier

scanReport_probe 
├── LICENSE 
├── Makefile 
├── README.md 
└── src 
    ├── data 
    │ └── THIS IS FOR DATA FILES.txt 
    ├── runScript 
    │ └── scanReportProbe 
    ├── scanReport_probe 
    │ ├── a.c 
    │ └── makefile 
    └── scanReport_probe.conf 

makefile pour openwrt

include $(TOPDIR)/rules.mk 

# name of package 
# version number of the sources you're using 
# how many times you've released a package based on the above version number 
PKG_NAME:=scanReport_probe 
PKG_VERSION:=1.0 
PKG_RELEASE:=1 
PKG_LICENSE:=MIT 

# sources will be unpacked into this directory (you shouldn't need to change this) 
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) 

#needed 
include $(INCLUDE_DIR)/package.mk 


# Metadata; information about what the package is for the ipkg listings 
# to keep things simple, a number of fields have been left at their defaults 
# and are not shown here. 
define Package/scanReport_probe 
    SECTION:=utils 
    CATEGORY:=Utilities 
    TITLE:=scanReport_probe 
    URL:=https://github.com/luigiDB/scan-report_probe 
    TITLE:=Scan in monitor mode probe over wifi channel with periodic report to a server through http post. 
    MAINTAINER:=Please refer to github repository page 
endef 

define Package/scanReport_probe/description 
    This is the best tool ever. 
    Scan probe over wifi and at regualar interval send results via http post. 
endef 


define Build/Prepare 
    mkdir -p $(PKG_BUILD_DIR) 
    $(CP) ./src/* $(PKG_BUILD_DIR)/ 
endef 


CONFIGURE_VARS+= \ 
    CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" 


define Build/Compile 
    $(MAKE) -C $(PKG_BUILD_DIR)/scanReport_probe $(TARGET_CONFIGURE_OPTS) 
endef 

# We'll use the OpenWrt defaults to configure and compile the package. Otherwise we'd need to define 
# Build/Configure - commands to invoke a configure (or similar) script 
# Build/Compile - commands used to run make or otherwise build the source 

define Package/scanReport_probe/install 
    # Now that we have the source compiled (magic huh?) we need to copy files out of the source 
    # directory and into our ipkg file. These are shell commands, so make sure you start the lines 
    # with a TAB. $(1) here represents the root filesystem on the router. 
    # INSTALL_DIR, INSTALL_BIN, INSTALL_DATA are used for creating a directory, copying an executable, 
    # or a data file. +x is set on the target file for INSTALL_BIN, independent of it's mode on the host. 

    # make a directory for the config 
    $(INSTALL_DIR) $(1)/etc/scanReport_probe/ 

    # copy the config 
    $(INSTALL_CONF) $(PKG_BUILD_DIR)/scanReport_probe.conf $(1)/etc/scanReport_probe 

    # make a directory for some random data files required by scanReport_probe 
    $(INSTALL_DIR) $(1)/usr/share/scanReport_probe 

    # copy the data files 
    $(INSTALL_DATA) $(PKG_BUILD_DIR)/data/* $(1)/usr/share/scanReport_probe 

    #make directory bin 
    $(INSTALL_DIR) $(1)/bin 

    # copy the binary 
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/scanReport_probe/scanReportProbe $(1)/bin 

    #make the directory init.d in case isn't present 
    $(INSTALL_DIR) $(1)/etc/init.d 

    #copy script to init.d 
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/runScript/scanReportProbe $(1)/etc/init.d  
endef 


#runned post installation call the enable on the service 
define Package/scanReport_probe/postinst 
    #!/bin/sh 
    # check if we are on real system 
    if [ -z "$${IPKG_INSTROOT}" ]; then 
     echo "Enabling rc.d symlink for scanReportProbe" 
     /etc/init.d/scanReportProbe enable 
    fi 
    exit 0 
endef 


#runned pre uninstallation call the disable on the service 
define Package/scanReport_probe/prerm 
    #!/bin/sh 
    # check if we are on real system 
    if [ -z "$${IPKG_INSTROOT}" ]; then 
     echo "Removing rc.d symlink for scanReportProbe" 
     /etc/init.d/scanReportProbe disable 
    fi 
    exit 0 
endef 

$(eval $(call BuildPackage,scanReport_probe)) 

ac

#include <stdio.h> 
int main(void) 
{ 
     printf("Hello World\n"); 
     return 0; 
} 

makefile pour le programme c

PROFILE = -O2 -s 
CFLAGS = $(PROFILE) 
LDFLAGS = 

all: main 

# build it 
main: a.o 
    $(CC) $(LDFLAGS) a.o -o scanReportProbe 

a.o: a.c 
    $(CC) $(CFLAGS) -c a.c 

# clean it 
clean: 
    rm *.o a 
+0

Etes-vous sûr d'avoir sélectionné l'architecture correcte dans menuconfig? Que dit 'fichier build_dir/target - */scanReport_probe */scanReportProbe'? Comparez-le à un binaire de votre périphérique openwrt (par exemple copiez '/ bin/busybox' sur votre machine hôte et lancez' fichier'). –

+0

En outre, essayez de supprimer la clause 'define Build/Compile' et l'affectation' CONFIGURE_VARS' - les valeurs par défaut devraient bien fonctionner pour vous. –

+0

Tout est configuré correctement. Je ne sais pas pourquoi mais compiler ce dépôt git: //git.openwrt.org/15.05/openwrt.git au lieu du tronc a résolu le problème. – LuigiDB

Répondre

0

Pour -ash, IIRC, ash est un shell [d'amorçage]. Il dit qu'il ne peut pas trouver une commande particulière.

Ainsi, il peut être l'une:

(1) Dans votre section script rc, vous faites /etc/init.d/scanReportProbe enable mais le paquet que vous construisez utilise scanReport_probe. Donc, vous devrez peut-être ajouter ou supprimer un _ ici ou là et/ou d'autres renommer les choses de sorte que les choses correspondent. (2) Si la structure de fichier que vous avez donnée est la dernière, je ne suis pas sûr que le script soit dans le bon répertoire. (3) Les permissions pour le script sont-elles correctes (c'est-à-dire ont-elles été exécutées)?

+0

Après l'installation, chaque fichier est dans le bon répertoire et j'ai également testé sans le script init.d juste pour être sûr. L'exécutable sous le dossier bin a l'autorisation d'exécution '-rwxr-xr-x 1 root root 1527 17 août 17:15 scanReportProbe' mais aussi avec'/bin/scanReportProbe' je reçois la même erreur. Je teste aussi d'autres référentiels que j'ai trouvés en ligne et tout le monde me donne la même erreur. – LuigiDB