Armadilloフォーラム

ABOSのArmadilloのプロジェクトについて

shun

2024年8月27日 18時15分

お世話になっております。
現在、ABOS対応のArmadilloでATDE上のVS Codeでコーディングをしている者です。

Armadillo-840mで以前製作していた製品からの移植という形でArmadillo-610(ABOS対応)に移植したいと考えております。
Makefileを以前製作していたものを活用しようと思っているのですが、VS Code上の"C New Project"で生成されるテンプレートではなく別のディレクトリから動作させることは可能でしょうか?

移殖しようとしているMakefileを共有します。

#クロスコンパイル
CROSS:=arm-linux-gnueabi
 
ifneq ($(CROSS),)
CROSS_PREFIX:=$(CROSS)-
endif
 
#コンパイル対象([make CROSS=]の入力でATDE上で使用可能なファイルへとコンパイル)
CC=$(CROSS_PREFIX)gcc
 
#警告オプション
CFLAGS=-Wall
 
#プログラム名
PROGRAM=InitSubToMain
 
#ターゲット名(PROGRAMから変更があるときのみ)
TARGET=$(PROGRAM)
 
#インクルードパス
USER_INCLUDE= -I /.../main/include
 
#オブジェクトディレクトリ
OBJ_DIR=/.../main/common/object
 
#共通部ソースファイルディレクトリ
SRC_DIR=/.../main/common/src
 
#使用オブジェクト
OBJS=$(PROGRAM).o $(OBJ_DIR)/std_string.o $(OBJ_DIR)/std_time.o $(OBJ_DIR)/std_unixcomm.o $(OBJ_DIR)/std_cgi.o $(OBJ_DIR)/product_org.o $(OBJ_DIR)/product_subtomain.o
 
#SSL関連
#SSL_OPT1=-lssl
#SSL_OPT2=-lcrypto
 
#makeコマンドだけだと一番上のターゲットを実行
all: $(TARGET)
 
#ターゲット
$(TARGET):	$(OBJS)
	$(CC) -o $(TARGET) $^ $(SSL_OPT1) $(SSL_OPT2)
#ターゲットオブジェクト
$(PROGRAM).o: $(PROGRAM).c
	$(CC) $(CFLAGS) $(USER_INCLUDE) -o $@ -c $<
#サフィックスルール 共通項
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) $(USER_INCLUDE) -o $@ -c $<
 
#make cleanで.oファイル削除
clean:
	$(RM) $(TARGET) $(OBJS)

以上、よろしくお願いいたします。

コメント

at_satoshi.ohta

2024年8月28日 11時03分

太田です。

申し訳ありません。
ABOSDE は作成されるプロジェクトのディレクトリ構造と依存関係があるので、
C New Project で作成したプロジェクトディレクトリとは別のディレクトリから動作させることは難しいです。

ABOSDE で C 言語のコードをビルドして SWU イメージを作成するためには C New Project で作成されるプロジェクト(ここではmy_projectディレクトリとします)の my_project/app/src 内にソースコードと Makefile を配置する必要があります。

理由としてはABOSDEの内部実装として、ATDE上でコンテナを作成した後、そのコンテナに my_project/app/src をマウントして、コンテナの中で my_project/app/src 直下の Makefile を用いてビルドを行うためです。

また、my_project/app/build ディレクトリ(実行ファイルを配置する)と my_project/app/lib ディレクトリ(共有ライブラリを配置する)に配置したバイナリファイルが Armadillo にインストールするための SWU イメージに含まれます。

そのため、ABOSDE から C 言語に対応した SWU イメージを作成する場合、以下の制限があります。

* ソースコードを my_project/app/src に置いてください。
* Makefile は my_project/app/src 直下に置いてください。
* 実行ファイルは my_project/app/build に置く必要があります。
* 共有ライブラリは my_project/app/lib に置く必要があります。
* そのため、Makefile を上記のディレクトリ構造に対応するように修正してください。
* ビルドに必要なパッケージを my_project/container/packages.txt に追記してください。

製品マニュアルにも C 言語のプロジェクト開発にあたり必要な注意点が記述されていますので、ご参照いただければと思います。

https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…

ご期待通りの回答ができずに申し訳ありません。
どうぞよろしくお願いいたします。

shun

2024年9月9日 13時24分

太田様
ご回答ありがとうございます。
ABOSによるビルドは/app/src直下のMakefileと同じ階層のソースファイルでないとできないということで承知いたしました。

もう一つ質問があるのですが、今回「C New Project」の他に、ShellScriptのビルドコンパイルも併用して移植したいと考えているのですが、こちらの場合は、MakefileにShell用の記述をしないと動作しないのでしょうか?
ご回答のほど、よろしくお願いいたします。

at_satoshi.ohta

2024年9月9日 15時07分

太田です。

1つお聞きしたいのですが、シェルスクリプトを実行したいという状況はどういう状況をお考えですか?

例えば、c 言語のコードの中でシェルスクリプトを呼び出すことをお考えでしょうか?
それとも、c 言語のプログラムの実行前後で別途シェルスクリプトを単独で実行することを想定していますか?

どちらでもない場合は、もう少し詳細な状況をお教えいただければ幸いです。

よろしくお願いいたします。