0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[02] C言語でコンソールから関数を呼び出す機構の振り返り ...ファイル構成とMakefile

Last updated at Posted at 2021-08-07
本シリーズのトップページ
https://qiita.com/robozushi10/items/fc185b5da0509b9a631f

はじめに

本記事の趣旨は「01 概要」に記しているが、
13年前(=2008年) に職場のプログラムの挙動をマネて実装した
「コンソールから関数を呼び出す機構」の振り返りである.

本項では「ファイルの構成」と「Makefile」について記す.

ファイル構成

make 実行後(コンパイル & リンク後)の状態である

.
|-- Makefile
|-- test_driver.c ..... 今回デバッグしたい関数が実装されたコード
|-- priv_cfn_invoke.h . stdin からの入力待受け、および、test_driver.c の公開関数呼び出し処理の宣言部
|-- cfn_invoke.c ...... 上記の priv_cfn_invoke.h の実装部
|-- mk_sym_tbl.rb ..... 生成された *.o から readelf -s を使って公開関数名を抽出する
|-- cfn.extern.h ...... 上記 mk_sym_tbl.rb から生成された関数の extern宣言. 
|                       コンパイル&リンクエラー回避のために用いる.
`-- cfn.tbl.h ......... 上記 mk_sym_tbl.rb から生成された関数名と関数アドレスを定義したヘッダ

Makefile

SRCS = test_driver.c
OBJS = $(SRCS:.c=.o)
MUSTSRC = cfn_invoke.c priv_cfn_invoke.h 

all: $(SRCS)
	gcc -c $(SRCS)
	./mk_sym_tbl.rb $(OBJS)
	gcc -g $(MUSTSRC) $(OBJS)
clean:
	rm -f *.o *~ a.out
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?