TAKEROOM

電子工作についてのメモ書きです。主にマイクロマウスについて書いていきたいです(初心者)。 たまに自転車乗ります。

2018年03月


Renesas Optimizing Linker Abort

ソースコードを書いて、コンパイルしようするとエラーが出ました。

リンクできないとか言ってます。

しかも

The evaluation period has expird 
(お前さん評価期間が過ぎてるぜ‼)

とかも言っているので、リンクサイズ確認するが別にサイズに問題なし...

今まで使っていた関数とか名前を変えてみても原因は見つからず。

過去のバックアップデータと比較しながら、しらみつぶしにソースコードを当たってみるとヘッダーファイルで宣言しているグローバル変数がおかしいことに気づきました。

調べてみると、「extern付き宣言」にたどり着きました。

原因は複数のファイルで、ヘッダーファイルで宣言した変数を使っていたことが原因でした。

ファイルが大きくなるとこういうことが起こるんですね。

ヘッダーファイルで宣言した変数にexternをつけ、1つのCファイルでextern無しで変数宣言したらコンパイルしました。

ソフトはまだまだ勉強不足です(ハードができるとは言っていない)。




はじめに
今後,研究室が忙しくなり,後輩となかなか顔を合わせる機会が無くなると思います。

それなので,マウスをやっている人が当たり前にやっているようなことも今後は書いていきます。

今回は関数や変数がどこで実行されているか探す方法についてお話しします。


検索方法
僕の所属するサークルではOBの先輩のソースコードを解析しながら,プログラムを書いています。

僕は今まで、検索するときは「Ctrl + F」を使い、キーワード検索をファイルごとにいちいち行っていました。

しかし、あるプログラムがわからず先輩に相談したときに「grepしてソースを解析する」という話をしていただきました。

そこで初めて「grep」という単語を聞きました。


grepとは?
Wikipedia先生は「テキストファイル中から、正規表現に一致する行を検索して出力するコマンド」と言っています。
https://ja.wikipedia.org/wiki/Grep

要は「指定した文字列を検索するときに使うコマンド」です。

これを使うことで、検索ワードに該当する箇所が一覧となって出力されます。


実際に使ってみる
僕は普段、サクラエディタを使っているのでそれを例に解説します。

・図1のように「検索」→「Grep(G)」をクリックして,図2の画面を立ち上げます。
ショートカットだと「Ctrl + G」で立ち上がります。

図1
図1


図2
図2

・「条件(N)」の中に検索したいキーワードを入力します。

・「ファイル(T)」で検索するファイルの拡張子の指定を行います。

・「フォルダ(O)」で検索するフォルダを指定します。

・その他の設定を行い、「検索」をクリックすると、図3のように該当箇所が一覧となって出力されます。

図3
図3

・出力された箇所をダブルクリックするとその場所にジャンプできます。


感想
今までの方法が如何に効率が悪いかを痛感させられました。

当たり前にやっているようなことでも、こうして書くことは結構重要だと思います。


↑このページのトップヘ