shun
2025年4月22日 13時30分
==========
製品型番:Armadillo-610
Debian/ABOSバージョン:3.19.2-at.5
カーネルバージョン:5.10.220
==========
[abos/resources]ディレクトリに置いたファイル(abos/resources/usr/bin/InitProgram ←個人で作成した初期起動用の実行ファイル)をメイン関数で実行するようにして.swuを書き込んだのですが、実行できませんでした。
Armadillo本体にアクセスしてファイルの実態を確認すると、
armadillo:/usr/bin# ./InitProgram -ash: ./InitProgram : not found armadillo:/usr/bin# file ./InitProgram -ash: file: not found armadillo:/usr/bin# ls -l ./InitProgram -rwxr-xr-x 1 root root 307736 Apr 21 17:08 ./InitProgram armadillo:/usr/bin# ls /lib/ /usr/lib/ | grep libstdc++ libstdc++.so.6 libstdc++.so.6.0.32
ファイルの実態はあるのに[not found]と出てしまいます。
原因がわかりましたらご回答の程、よろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
コメント 2025-04-22 115821.png |
コメント
shun
お世話になっております。
> 1. InitProgram は C 言語のソースコードを make して作成した実行バイナリファイルということでよろしいでしょうか?
> make した場合はどこで make しましたか?ATDE上でしょうか?それともATDE上のArmadillo に転送するコンテナの中でしょうか?
こちらはATDE上のMakefileによってコンパイルした実行ファイルです。
生成した実行ファイルを[abos/resources/usr/bin/]ディレクトリに移動してswuファイルを本体にコピーしました。
#プログラム名 PROGRAM=InitProgram #ターゲット名(PROGRAMから変更があるときのみ) TARGET=../build/InitProgram #インクルードパス USER_INCLUDE= -I include #オブジェクトディレクトリ OBJ_DIR=./common/object #共通部ソースファイルディレクトリ SRC_DIR=./common/src MAINSRCS := $(PROGRAM).c COMSRCS := $(wildcard *.c) SRCS := $(MAINSRCS) $(COMSRCS) OBJS := $(SRCS:%.c=%.o) DEPS := $(OBJS:.o=.d) CFLAGS += -O0 -Wall -Wextra -MMD -MP all: $(TARGET) #ターゲット $(TARGET): $(OBJS) $(CC) $(LDFLAGS) $(TARGET_ARCH) $^ -g -o $@ %.o:%.c $(CC) -c -g $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $< -o $@ .PHONY: clean clean: $(RM) $(OBJS) $(DEPS) $(TARGET) -include $(DEPS)
> 2. InitProgram はABOS上のコンテナの中で実行するべき実行ファイルでしょうか?それともABOS(ホスト)で実行するべき実行ファイルでしょうか?
InitProgramはABOS(ホスト)で実行する予定の実行ファイルです。
こちらの件は旧Armadillo-840mで製品化していたプログラムの移植をしたいと思っており、ABOSで使用されているコンテナを活用しつつ、プログラム内で定義したルートなどの情報はできるだけ変更しないように開発を進めたいと考えております。
> 3. InitProgram が行う具体的な処理をもう少し詳しく教えていただけますしょうか?
①main関数で[/etc/init.d/init.sh ←初回処理スクリプト]を実行します。main関数の処理は以上。
②[/etc/init.d/init.sh]では、弊社のメイン基板からの通信処理モジュール(MainComm)をバックグラウンド実行したのち、メイン基板への通信処理を実行するモジュール(SubComm)を起動します。
/* 一部抜粋 */ # Launch MainToSubComm /usr/bin/MainComm & echo "MainComm End" # Launch Init Module echo "SubComm Start" /usr/bin/SubComm
MainCommとSubCommは、それぞれgdbデバッグ環境上で実行できることは確認しています。
以上、よろしくお願いいたします。
at_satoshi.ohta
2025年4月22日 13時51分
太田です。
別スレッドとして立てていただきありがとうございます。
InitProgram について質問させてください。
1. InitProgram は C 言語のソースコードを make して作成した実行バイナリファイルということでよろしいでしょうか?
make した場合はどこで make しましたか?ATDE上でしょうか?それともATDE上のArmadillo に転送するコンテナの中でしょうか?
2. InitProgram はABOS上のコンテナの中で実行するべき実行ファイルでしょうか?それともABOS(ホスト)で実行するべき実行ファイルでしょうか?
3. InitProgram が行う具体的な処理をもう少し詳しく教えていただけますしょうか?
どうぞよろしくお願いいたします。