MISRA-C diary(C言語日誌)

2017年8月の記事一覧

ソフトウェア導入管理ソフトを使う7つの理由

ソフトウェア導入管理ソフトを使う7つの理由

ここでは、ソフトウェア導入管理ソフトを以下の3つを想定します。

1. ports(FreeBSD/unix)

2. apt(debian/linux)

3. brew(Mac OS X)

これ以外にも、pythonのpipなどがあります。

1 個人的な背景
ports, apt, brewを利用するようになった個人的な背景を記述し、ports, apt, brewの利点と遭遇したことがある事象について記述します。最初に、他の目的での利用の場合に比べて、経験の方よりがあるかもしれないことをお断りします。

1.1 ports
unix系のソフトウェアは、カーネルの一部を変更してコンパイルするものがありました。例えば、画像処理系でX Windowを使うライブラリはカーネルの変更が必要でした。
unixのソースコードをコンパイルするときに、エラーが出てなかなかコンパイルが最後までできませんでした。bsdユーザの方から、portsを使えばソースコードや導入済みソフトウェアの整合性を取ることができることを教えてもらいました。
最初にカーネルのソースコードのコンパイルができたのはFreebsdのportsを利用してです。

1.2 apt
Linuxのソースコードのコンパイルも、うまくいきませんでした。特に、通信の研究をするためにmobile ipという通信規約の実験を行おうとしました。Linuxのカーネルの特定の版の、特定のパッチを適用した版で研究されたソースコードを利用する必要がありました。Linuxのカーネルの特定の版をaptで導入し、コンパイルに成功したら、次に特定のパッチを適用し、コンパイルに成功し、最後に提供されたMobile IPをコンパイルするというやり方です。また、この際に、通信相手としてTCP/IPが安定しているbsd(FreeBSDとNetBSD)を利用して、Linuxの通信が、Linuxだけで利用できる通信ではないことを確認しました。これは、FreeBSDでのカーネルのコンパイルと、BSD系がTCP/IPで古くから参照実装として対抗試験に用いられてきていることに基づいています。

3. brew
MacintoshがMac OS Xになって、UNIX/Linux系のソフトウェアが利用できるようになりました。しかし、カーネルのソースをそのままコンパイルするとコンパイルエラー、リンクエラーがでることがあります。そこで利用しはじめたのがbrewです。UNIX/Linux上と同じソフトウェアを導入したり、Mac OS Xだけで利用できるソフトウェアを導入するにも利用しています。

2. 利点
2.1 コンパイルエラーがなく、コンパイルエラーの原因の調査の必要がない

Unix/Linux系のソフトウェアの導入で、悩まされたのがコンパイルエラーです。
例えば、新しい通信用のICが開発されて、その通信用のICのデバイスドライバが
公開されても、最初はWindows用のドライバのバイナリと特定のUnix/Linuxの版のドライバの試作のことがありました。そのソースコードをコンパイルしても、コンパイルエラーがでるし、Unix/Linuxのカーネル側が問題なのか、デバイスドライバ側が問題なのか、しらべようとしても調べるためのソフトウェアをコンパイルできないという悪循環に陥ったりしました。

コンパイルエラー地獄と呼んでいました。コンパイルエラーを調べるのに、別のソフトが必要で、そのソフトのコンパイルをして、そこでコンパイルエラーがでて、その原因を調べるのに、また別のソフトが必要で、そのソフトのコンパイルをして、そこでコンパイルエラーがでたときに、集中力が切れてしまうということがなんどもあり、、。

2.2 リンクエラー

コンパイルは警告がでてなんとかできたときも、リンクエラーで必要なソフトウェアができないこともしばしばありました。
リンクエラーの理由のいくつかは、ソフトウェアの対応する版の違いです。

ここからは記憶違いかもしれませんが、
Aというソフトウェアの版1.1 は、Bというライブラリの版2.1とCというライブラリの版3.1が必要なことがありました。Bというライブラリの版2.1をコンパイルするには、Dというライブラリの版4.1が必要で、Cというライブラリの版3.1をコンパイルするには、Dというライブラリの版5.1が必要という感じで、Dの2つの版が必要というような状況に遭遇したような気がします。

リンクエラーを取るのは、どこかにちょっとしたヒントがあって解決する場合もあれば、延々とリンク・コンパイルのエラー地獄に入ることもありました。

日本語対応などの場合には、英語のソフトウェアと違い、ライブラリ類の日本語対応の範囲が違うための不整合などにも遭遇したような気がします。

2.3 コマンドエラー
コンパイルを実行する際に、コンパイラ、リンカ以外に、ライブラリアンや、パッチ当てなど、別のコマンドを利用することがあります。それらのコマンドが用意できていないとコマンドエラーになります。コマンドの導入がうまくいけば、解決する課題ですが、コマンドのコンパイルでコンパイルエラー、リンクエラーがでると、コンパイル・リンクエラー地獄にはまるかもしれません。
Makeコマンド、パッチコマンド、ライブラリアンの特定の版を想定したMakefileになっていると、対応するコマンド類を探すのに時間がかかることがあり、それをソースコードからコンパイルする必要があると、コンパイル地獄、リンク地獄に戻ることがありました。

コマンドを導入したときに、導入先を間違えていたり、環境変数の設定を間違えていたときには、もう一つコマンドを導入すると、その2つのコマンドの版の違いによる、違うエラーに遭遇することもあったような気がします。コマンドの導入には、導入先、導入時の環境変数などの整合性のある設定が大事です。


2.4 環境変数エラー
コンパイル・リンクする際に、コンパイラ・リンカが、いろいろな環境変数を利用し、ある整合性が取れているときだけ、うまくいく場合があります。これらの環境変数の設定が、そのソフトウェアを作った人といろいろ違うと、環境変数等の設定地獄にはまるかもしれません。特に、どのコマンドがあるかどうか、日本語を使うかどうかなどによって設定が違う場合など、コマンドエラー、リンクエラーに舞い戻ってしまうことがあったような記憶があります。


2.5 ダウンロード元の調査
あるソフトウェアをコンパイルするのに、必要なソフトウェアの必要な版が特定されているときに、それらを揃えるための調査に時間がかかることがありました。
例えば、カーネルの特定の版に、特定のパッチを当てた場合にだけコンパイルができるときに、特定の版とパッチとが別の場所にあると、その整合性のある組み合わせを探すのに、時間がかかることがあります。特に、手元にあるOSの特定の版のコマンド群でコンパイルできる組み合わせを探すのに、1日では終わらないことがありました。

2.6 作業手順の調査
ここもちょっとうろ覚えなので、経験がややずれているかもしれません。
あるソフトウェアを導入するのに、コンパイル作業中はコマンド・ライブラリが古い版でもよく、最後のリンクの時には、コマンドまたはライブラリが新しい版が必要なときには、手順が前後すると最後までうまくいかないことがあったような気がします。

Makefileで途中でエラー・警告が出ても、後の作業に進んでしまうときに、後で実施したいことが先に終わってしまうようなことがあるときに、元に戻すコマンドやバッチ記述が完全でないときなどです。
自動実行できるはずなので、Makefileの罠と呼んだようなきがします。

2.7 未確認の課題
ここまでは、調べていくと、たぶんこの種類の問題だと分かる事象です。
上記以外の原因や事象が起きたかどうかが、出たエラーでネットなどで検索しても
現れないと原因や事象そのものが把握できていない未確認地獄に嵌り抜けられないことがあります。原因を調べるコマンドを新たに導入する必要があったり、ライブラリが必要だったり、環境変数のエラーがでたり、何か一つやるたびに、二つ以上のエラー・警告がでていき、未解決のエラー・警告の数が単調増加するような場合です。
根幹の原因が、コンパイルエラー、リンクエラー、コマンドエラー、環境変数設定エラーと特定できる場合は記録しておけば、そのうち解決するかもしれませんが、
OSやコンパイラをはじめとするコマンド群が新しくなり、環境変数設定などを一新したら、全く違うエラーがではじめると、なにがなんだか、さらにわからなくなることがあったようなきがします。

これらは、思い違い、勘違い、記録間違いの可能性があるため、
何かを保証するわけではありません。

ports, apt, brewを利用する理由は、上記の7つの事態に遭遇しないためです。
Linux系のyum, Macintosh系のMacportsなども利用したことがあります。
現在利用していないため省略しています。
0

LLVM(Windows)

 LLVM(Windows)

https://llvm.org/builds/

 windows installer

 LLVM-6.0.0-r31115

LLVMセットアップウィザードは完了しました。

cmd

>llvm
'llvm' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Program Files (x86)>dir

 C:\Program Files (x86) のディレクトリ

2017/08/28  14:47    <DIR>          .
2017/08/28  14:47    <DIR>          ..
2017/01/06  15:15    <DIR>          Adobe
2017/01/06  15:15    <DIR>          Common Files
2017/01/06  15:33    <DIR>          Google
2017/01/15  17:28    <DIR>          Internet Explorer
2017/08/28  14:48    <DIR>          LLVM
2016/07/16  20:47    <DIR>          Microsoft.NET
2017/01/06  14:26    <DIR>          Windows Defender
2017/01/06  14:26    <DIR>          Windows Mail
2017/01/06  14:26    <DIR>          Windows Media Player
2016/07/16  20:47    <DIR>          Windows Multimedia Platform
2016/07/16  20:47    <DIR>          Windows NT
2017/01/06  14:26    <DIR>          Windows Photo Viewer
2016/07/16  20:47    <DIR>          Windows Portable Devices
2016/07/16  20:47    <DIR>          WindowsPowerShell
               0 個のファイル                   0 バイト
              16 個のディレクトリ  106,161,815,552 バイトの空き領域

C:\Program Files (x86)>cd LLVM

C:\Program Files (x86)\LLVM>dir

 C:\Program Files (x86)\LLVM のディレクトリ

2017/08/28  14:48    <DIR>          .
2017/08/28  14:48    <DIR>          ..
2017/08/28  14:48    <DIR>          bin
2017/08/28  14:48    <DIR>          include
2017/08/28  14:48    <DIR>          lib
2017/08/28  14:48    <DIR>          libexec
2017/08/28  14:48    <DIR>          msbuild-bin
2017/08/28  14:48    <DIR>          share
2017/08/28  14:48    <DIR>          tools
2017/08/28  14:48           157,284 Uninstall.exe
               1 個のファイル             157,284 バイト
               9 個のディレクトリ  106,161,815,552 バイトの空き領域

C:\Program Files (x86)\LLVM>cd bin

C:\Program Files (x86)\LLVM\bin>dir

 C:\Program Files (x86)\LLVM\bin のディレクトリ

2017/08/28  14:48    <DIR>          .
2017/08/28  14:48    <DIR>          ..
2017/03/30  16:42            18,752 api-ms-win-core-console-l1-1-0.dll
2017/03/30  16:42            18,240 api-ms-win-core-datetime-l1-1-0.dll
2017/03/30  16:43            18,240 api-ms-win-core-debug-l1-1-0.dll
2017/03/30  16:43            18,240 api-ms-win-core-errorhandling-l1-1-0.dll
2017/03/30  16:43            21,824 api-ms-win-core-file-l1-1-0.dll
2017/03/30  16:44            18,240 api-ms-win-core-file-l1-2-0.dll
2017/03/30  16:44            18,240 api-ms-win-core-file-l2-1-0.dll
2017/03/30  16:44            18,240 api-ms-win-core-handle-l1-1-0.dll
2017/03/30  16:45            18,240 api-ms-win-core-heap-l1-1-0.dll
2017/03/30  16:45            18,752 api-ms-win-core-interlocked-l1-1-0.dll
2017/03/30  16:45            18,752 api-ms-win-core-libraryloader-l1-1-0.dll
2017/03/30  16:46            20,792 api-ms-win-core-localization-l1-2-0.dll
2017/03/30  16:46            18,752 api-ms-win-core-memory-l1-1-0.dll
2017/03/30  16:46            18,240 api-ms-win-core-namedpipe-l1-1-0.dll
2017/03/30  16:47            19,264 api-ms-win-core-processenvironment-l1-1-0.dll
2017/03/30  16:47            20,288 api-ms-win-core-processthreads-l1-1-0.dll
2017/03/30  16:47            18,752 api-ms-win-core-processthreads-l1-1-1.dll
2017/03/30  16:48            17,728 api-ms-win-core-profile-l1-1-0.dll
2017/03/30  16:48            17,728 api-ms-win-core-rtlsupport-l1-1-0.dll
2017/03/30  16:48            18,240 api-ms-win-core-string-l1-1-0.dll
2017/03/30  16:49            20,288 api-ms-win-core-synch-l1-1-0.dll
2017/03/30  16:49            18,744 api-ms-win-core-synch-l1-2-0.dll
2017/03/30  16:49            19,264 api-ms-win-core-sysinfo-l1-1-0.dll
2017/03/30  16:50            18,240 api-ms-win-core-timezone-l1-1-0.dll
2017/03/30  16:50            18,240 api-ms-win-core-util-l1-1-0.dll
2017/03/30  16:50            19,264 api-ms-win-crt-conio-l1-1-0.dll
2017/03/30  16:51            22,336 api-ms-win-crt-convert-l1-1-0.dll
2017/03/30  16:51            18,752 api-ms-win-crt-environment-l1-1-0.dll
2017/03/30  16:51            20,288 api-ms-win-crt-filesystem-l1-1-0.dll
2017/03/30  16:51            19,264 api-ms-win-crt-heap-l1-1-0.dll
2017/03/30  16:52            18,752 api-ms-win-crt-locale-l1-1-0.dll
2017/03/30  16:52            28,984 api-ms-win-crt-math-l1-1-0.dll
2017/03/30  16:52            26,432 api-ms-win-crt-multibyte-l1-1-0.dll
2017/03/30  16:53            73,024 api-ms-win-crt-private-l1-1-0.dll
2017/03/30  16:53            19,264 api-ms-win-crt-process-l1-1-0.dll
2017/03/30  16:54            22,848 api-ms-win-crt-runtime-l1-1-0.dll
2017/03/30  16:54            24,384 api-ms-win-crt-stdio-l1-1-0.dll
2017/03/30  16:54            24,384 api-ms-win-crt-string-l1-1-0.dll
2017/03/30  16:55            20,800 api-ms-win-crt-time-l1-1-0.dll
2017/03/30  16:55            18,744 api-ms-win-crt-utility-l1-1-0.dll
2017/08/19  01:47        71,366,144 clang++.exe
2017/08/19  01:40         2,332,672 clang-apply-replacements.exe
2017/08/19  01:41        18,471,936 clang-change-namespace.exe
2017/08/19  01:40        62,053,376 clang-check.exe
2017/08/19  01:47        71,366,144 clang-cl.exe
2017/08/19  01:47        71,366,144 clang-cpp.exe
2017/08/19  01:39         2,353,152 clang-format.exe
2017/08/19  01:40        22,142,464 clang-import-test.exe
2017/08/19  01:41        18,103,808 clang-include-fixer.exe
2017/08/19  01:39         3,060,736 clang-offload-bundler.exe
2017/08/19  01:40        18,848,256 clang-query.exe
2017/08/19  01:40        18,262,528 clang-rename.exe
2017/08/19  01:40        18,235,904 clang-reorder-fields.exe
2017/08/19  01:41        23,981,056 clang-tidy.exe
2017/08/19  01:40        71,366,144 clang.exe
2017/08/19  01:40        18,136,064 clangd.exe
2017/04/28  01:59           243,016 concrt140.dll
2017/08/19  01:41        18,038,784 find-all-symbols.exe
2017/06/15  09:54            21,791 git-clang-format
2017/08/19  01:48        50,656,256 ld.lld.exe
2017/08/19  01:42        65,559,552 libclang.dll
2017/08/19  01:47           582,144 libiomp5md.dll
2017/08/19  01:42        71,798,784 liblldb.dll
2017/08/19  01:36           582,144 libomp.dll
2017/08/19  01:48        50,656,256 lld-link.exe
2017/08/19  01:41        50,656,256 lld.exe
2017/08/19  01:42           186,368 lldb-argdumper.exe
2017/08/19  01:42           609,280 lldb-mi.exe
2017/08/19  01:42           208,896 lldb.exe
2017/08/19  01:37        16,472,576 llvm-ar.exe
2017/08/19  01:47        16,472,576 llvm-lib.exe
2017/08/19  01:42        16,961,536 llvm-objdump.exe
2017/08/19  01:47        16,472,576 llvm-ranlib.exe
2017/08/19  01:38        48,196,096 LTO.dll
2017/08/19  01:40        17,676,288 modularize.exe
2017/04/28  01:59           438,080 msvcp140.dll
2016/08/01  17:04            53,444 scan-build
2015/11/14  05:34                23 scan-build.bat
2015/12/21  21:19             4,504 scan-view
2017/03/30  16:55         1,147,712 ucrtbase.dll
2017/04/28  01:59            83,792 vcruntime140.dll
              81 個のファイル         956,073,098 バイト
               2 個のディレクトリ  106,161,815,552 バイトの空き領域


clang aa.c
clang.exe: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]
aa.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.


p.s.

Installing clang++ to compile and link on Windows : Part 2

clang/LLVMをWindowsでビルドする

clangでc++を試して四苦八苦したメモAdd Star

 


clang++を使う脱初心者を目指す


LLVM を Windows で使う(clang 編)

 

Clang with Microsoft CodeGen in VS 2015 Update 1

0

LLVM (Macintosh)



$ brew install llvm

Error: Can't create update lock in /usr/local/var/homebrew/locks!

Fix permissions by running:

  sudo chown -R $(whoami) /usr/local/var/homebrew

Error: Permission denied - /usr/local/var/homebrew/locks/llvm.formula.lock


$ sudo  chown -R $(whoami) /usr/local/var/homebrew

Password:


$ brew install llvm

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied

touch: /usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask/.git/FETCH_HEAD: Permission denied

touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/FETCH_HEAD: Permission denied

fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied

error: could not lock config file .git/config: Permission denied

==>Installing dependencies for llvm: libffi

==>Installing llvm dependency: libffi

==>Downloading https://homebrew.bintray.com/bottles/libffi-3.2.1.sierra.bottle.

######################################################################## 100.0%

==>Pouring libffi-3.2.1.sierra.bottle.tar.gz

==>Caveats

This formula is keg-only, which means it was not symlinked into /usr/local,

because some formulae require a newer version of libffi.


For compilers to find this software you may need to set:

    LDFLAGS:  -L/usr/local/opt/libffi/lib

For pkg-config to find this software you may need to set:

    PKG_CONFIG_PATH: /usr/local/opt/libffi/lib/pkgconfig


==>Summary

  /usr/local/Cellar/libffi/3.2.1: 16 files, 297.0KB

==>Installing llvm

==>Downloading https://homebrew.bintray.com/bottles/llvm-4.0.1.sierra.bottle.ta

######################################################################## 100.0%

==>Pouring llvm-4.0.1.sierra.bottle.tar.gz

==>Caveats

To use the bundled libc++ please add the following LDFLAGS:

  LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"


This formula is keg-only, which means it was not symlinked into /usr/local,

because macOS already provides this software and installing another version in

parallel can cause all kinds of trouble.


If you need to have this software first in your PATH run:

  echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> ~/.bash_profile


For compilers to find this software you may need to set:

    LDFLAGS:  -L/usr/local/opt/llvm/lib

    CPPFLAGS: -I/usr/local/opt/llvm/include



If you need Python to find bindings for this keg-only formula, run:

  echo /usr/local/opt/llvm/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/llvm.pth

  mkdir -p /Users/administrator/Library/Python/2.7/lib/python/site-packages

  echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/administrator/Library/Python/2.7/lib/python/site-packages/homebrew.pth

==>Summary

  /usr/local/Cellar/llvm/4.0.1: 2,244 files, 1021.3MB

0

LLVM linux(Debian, ubuntu)

$ apt-get install llvm

E: ロックファイル /var/lib/dpkg/lock をオープンできません - open (13: 許可がありません)

E: 管理用ディレクトリ (/var/lib/dpkg/) をロックできません。root 権限で実行していますか?


$ sudo apt-get install llvm

[sudo] administrator のパスワード: 

パッケージリストを読み込んでいます... 完了

依存関係ツリーを作成しています                

状態情報を読み取っています... 完了

以下の追加パッケージがインストールされます:

  binfmt-support libffi-dev libjsoncpp1 libtinfo-dev llvm-4.0 llvm-4.0-dev

  llvm-4.0-runtime llvm-runtime

提案パッケージ:

  llvm-4.0-doc

以下のパッケージが新たにインストールされます:

  binfmt-support libffi-dev libjsoncpp1 libtinfo-dev llvm llvm-4.0

  llvm-4.0-dev llvm-4.0-runtime llvm-runtime

アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 233 個。

23.9 MB のアーカイブを取得する必要があります。

この操作後に追加で 151 MB のディスク容量が消費されます。

続行しますか? [Y/n] y

取得:1 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 binfmt-support amd64 2.1.6-2 [50.6 kB]

取得:2 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libtinfo-dev amd64 6.0+20160625-1ubuntu1 [78.9 kB]

取得:3 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 llvm-4.0-runtime amd64 1:4.0-1ubuntu1 [185 kB]

取得:4 http://us.archive.ubuntu.com/ubuntu zesty/universe amd64 llvm-runtime amd64 1:4.0-34ubuntu2 [2,702 B]

取得:5 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libjsoncpp1 amd64 1.7.4-3 [73.6 kB]

取得:6 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 llvm-4.0 amd64 1:4.0-1ubuntu1 [3,962 kB]

取得:7 http://us.archive.ubuntu.com/ubuntu zesty/universe amd64 llvm amd64 1:4.0-34ubuntu2 [3,150 B]

取得:8 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libffi-dev amd64 3.2.1-6 [156 kB]

取得:9 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 llvm-4.0-dev amd64 1:4.0-1ubuntu1 [19.4 MB]

23.9 MB を 14秒 で取得しました (1,659 kB/s)                                    

以前に未選択のパッケージ binfmt-support を選択しています。

(データベースを読み込んでいます ... 現在 170909 個のファイルとディレクトリがインストールされています。)

.../0-binfmt-support_2.1.6-2_amd64.deb を展開する準備をしています ...

binfmt-support (2.1.6-2) を展開しています...

以前に未選択のパッケージ libtinfo-dev:amd64 を選択しています。

.../1-libtinfo-dev_6.0+20160625-1ubuntu1_amd64.deb を展開する準備をしています ...

libtinfo-dev:amd64 (6.0+20160625-1ubuntu1) を展開しています...

以前に未選択のパッケージ llvm-4.0-runtime を選択しています。

.../2-llvm-4.0-runtime_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

llvm-4.0-runtime (1:4.0-1ubuntu1) を展開しています...

以前に未選択のパッケージ llvm-runtime を選択しています。

.../3-llvm-runtime_1%3a4.0-34ubuntu2_amd64.deb を展開する準備をしています ...

llvm-runtime (1:4.0-34ubuntu2) を展開しています...

以前に未選択のパッケージ libjsoncpp1:amd64 を選択しています。

.../4-libjsoncpp1_1.7.4-3_amd64.deb を展開する準備をしています ...

libjsoncpp1:amd64 (1.7.4-3) を展開しています...

以前に未選択のパッケージ llvm-4.0 を選択しています。

.../5-llvm-4.0_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

llvm-4.0 (1:4.0-1ubuntu1) を展開しています...

以前に未選択のパッケージ llvm を選択しています。

.../6-llvm_1%3a4.0-34ubuntu2_amd64.deb を展開する準備をしています ...

llvm (1:4.0-34ubuntu2) を展開しています...

以前に未選択のパッケージ libffi-dev:amd64 を選択しています。

.../7-libffi-dev_3.2.1-6_amd64.deb を展開する準備をしています ...

libffi-dev:amd64 (3.2.1-6) を展開しています...

以前に未選択のパッケージ llvm-4.0-dev を選択しています。

.../8-llvm-4.0-dev_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

llvm-4.0-dev (1:4.0-1ubuntu1) を展開しています...

binfmt-support (2.1.6-2) を設定しています ...

Created symlink /etc/systemd/system/multi-user.target.wants/binfmt-support.service → /lib/systemd/system/binfmt-support.service.

ureadahead (0.100.0-19) のトリガを処理しています ...

install-info (6.3.0.dfsg.1-1) のトリガを処理しています ...

libtinfo-dev:amd64 (6.0+20160625-1ubuntu1) を設定しています ...

libffi-dev:amd64 (3.2.1-6) を設定しています ...

llvm-4.0-runtime (1:4.0-1ubuntu1) を設定しています ...

llvm-runtime (1:4.0-34ubuntu2) を設定しています ...

libc-bin (2.24-9ubuntu2) のトリガを処理しています ...

doc-base (0.10.7) のトリガを処理しています ...

doc-base ファイルを 33 個変更, doc-base ファイルを 1 個追加 を処理中...

systemd (232-21ubuntu3) のトリガを処理しています ...

man-db (2.7.6.1-2) のトリガを処理しています ...

libjsoncpp1:amd64 (1.7.4-3) を設定しています ...

llvm-4.0 (1:4.0-1ubuntu1) を設定しています ...

llvm (1:4.0-34ubuntu2) を設定しています ...

llvm-4.0-dev (1:4.0-1ubuntu1) を設定しています ...

libc-bin (2.24-9ubuntu2) のトリガを処理しています ...

sudo apt-get install clang

パッケージリストを読み込んでいます... 完了

依存関係ツリーを作成しています                

状態情報を読み取っています... 完了

以下の追加パッケージがインストールされます:

  clang-4.0 libclang-common-4.0-dev libclang1-4.0 libobjc-6-dev libobjc4

提案パッケージ:

  gnustep gnustep-devel clang-4.0-doc

以下のパッケージが新たにインストールされます:

  clang clang-4.0 libclang-common-4.0-dev libclang1-4.0 libobjc-6-dev libobjc4

アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。

62.1 MB のアーカイブを取得する必要があります。

この操作後に追加で 274 MB のディスク容量が消費されます。

続行しますか? [Y/n] y

取得:1 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libclang1-4.0 amd64 1:4.0-1ubuntu1 [6,429 kB]

取得:2 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libobjc4 amd64 6.3.0-12ubuntu2 [49.9 kB]

取得:3 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libobjc-6-dev amd64 6.3.0-12ubuntu2 [202 kB]

取得:4 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 libclang-common-4.0-dev amd64 1:4.0-1ubuntu1 [2,537 kB]

取得:5 http://us.archive.ubuntu.com/ubuntu zesty/main amd64 clang-4.0 amd64 1:4.0-1ubuntu1 [52.9 MB]

取得:6 http://us.archive.ubuntu.com/ubuntu zesty/universe amd64 clang amd64 1:4.0-34ubuntu2 [3,182 B]

62.1 MB を 29秒 で取得しました (2,126 kB/s)                                    

以前に未選択のパッケージ libclang1-4.0:amd64 を選択しています。

(データベースを読み込んでいます ... 現在 208427 個のファイルとディレクトリがインストールされています。)

.../0-libclang1-4.0_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

libclang1-4.0:amd64 (1:4.0-1ubuntu1) を展開しています...

以前に未選択のパッケージ libobjc4:amd64 を選択しています。

.../1-libobjc4_6.3.0-12ubuntu2_amd64.deb を展開する準備をしています ...

libobjc4:amd64 (6.3.0-12ubuntu2) を展開しています...

以前に未選択のパッケージ libobjc-6-dev:amd64 を選択しています。

.../2-libobjc-6-dev_6.3.0-12ubuntu2_amd64.deb を展開する準備をしています ...

libobjc-6-dev:amd64 (6.3.0-12ubuntu2) を展開しています...

以前に未選択のパッケージ libclang-common-4.0-dev を選択しています。

.../3-libclang-common-4.0-dev_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

libclang-common-4.0-dev (1:4.0-1ubuntu1) を展開しています...

以前に未選択のパッケージ clang-4.0 を選択しています。

.../4-clang-4.0_1%3a4.0-1ubuntu1_amd64.deb を展開する準備をしています ...

clang-4.0 (1:4.0-1ubuntu1) を展開しています...

以前に未選択のパッケージ clang を選択しています。

.../5-clang_1%3a4.0-34ubuntu2_amd64.deb を展開する準備をしています ...

clang (1:4.0-34ubuntu2) を展開しています...

libobjc4:amd64 (6.3.0-12ubuntu2) を設定しています ...

libclang-common-4.0-dev (1:4.0-1ubuntu1) を設定しています ...

libc-bin (2.24-9ubuntu2.2) のトリガを処理しています ...

libobjc-6-dev:amd64 (6.3.0-12ubuntu2) を設定しています ...

libclang1-4.0:amd64 (1:4.0-1ubuntu1) を設定しています ...

man-db (2.7.6.1-2) のトリガを処理しています ...

clang-4.0 (1:4.0-1ubuntu1) を設定しています ...

clang (1:4.0-34ubuntu2) を設定しています ...

libc-bin (2.24-9ubuntu2.2) のトリガを処理しています ..


p.s.
apt-get source llvm
でソースコードの導入をしている例がみあたらない。

apt-get source llvm
パッケージリストを読み込んでいます... 完了
'llvm' の代わりに 'llvm-defaults' をソースパッケージとして選出しています
E: パッケージ 'llvm' のバージョン '0.34ubuntu2' は見つかりませんでした
E: llvm-defaults のソースパッケージが見つかりません
administrator@ubuntu:/$ apt-get source clang
パッケージリストを読み込んでいます... 完了
'clang' の代わりに 'llvm-defaults' をソースパッケージとして選出しています
E: パッケージ 'clang' のバージョン '0.34ubuntu2' は見つかりませんでした
E: llvm-defaults のソースパッケージが見つかりません


LLVMのinstallのメモ


Install Clang, LLVM from source


Ubuntuでclangをビルドしてインストールする


p.s.
Ubuntu12.04でclang++の最新版のビルドとインストール
0

LLVMの導入


勉強会を始めるためにLLVMを導入、
コンパイルしようとしてつまづき中。

作業記録


1. Linux(Debian系)
apt-get install llvm



1.1 UBUNTU

https://www.ubuntulinux.jp/News/ubuntu1704-ja-remix

コマンド 端末がめんの開き方


導入例1 ubuntu llvm

・apt-getが利用できるユーザかどうか。
・sudoをしたときの管理者のパスワードを知っているか。

上記事例では、sudoのパスワードを知っていたために導入できた。



1.1.1 VMWare FusionにUbuntuを導入

Ubuntu 16.04 を VMware にインストール

http://qiita.com/ken1ma/items/29038a29bf80225d27b1


1.2 Debian
https://www.debian.org/devel/debian-installer/index.ja.html

2. Macintosh, Mac OS X
 
brew install llvm


brew自体の導入は


導入例2 MaC OS X


・brewが導入済みかどうか。

・brewを利用できる利用者かどうか。

・brewを利用できる利用者のID, パスワードをしっているかどうか。

・sudoのパスワードを知っているかどうか。

上記事例では、sudoのパスワードを知っていたために導入できた。


・環境変数の設定方法の指示がでるが、なぜ自動で設定してくれないのか?

自動で設定しようとして、文字溢れなどが生じるかどうか調査が必要かも。


3. Windows


導入例3 windows
・システム管理者のパスワードを知っているかどうか。

・導入ができたがコンパイルエラーが出る。
・・visual Studioが導入済の場合とそうでない場合で違うのか
・・環境変数の設定か?
0

第1章 はじめに

第 1章 はじめに


# comment
$ command

参考文献
[2] LLVM.org, http://llvm.org/

[3] Chris Lattner and Vikram Adve, LLVM: An Infractructure for Multi-Stage Optimization.
Master’s thesis, University of Illinois, 2002. See http://llvm.cs.uiuc.edu.
リンク切れ https://llvm.org/pubs/2002-12-LattnerMSThesis.html

[4] Chris Lattner and Vikram Adve, LLVM: A Compilation Framework for Lifelong
Program Analysis & Transformation, Proceedings of the 2004 International Symposium
on Code Generation and Optimization (CGO’04), Mar 2004. http://cgo.org/cgo2004/papers/06_76_lattner_c.pdf

[5] Arpan Sen, LLVM フレームワークで実用的なコンパイラーを作成す
る: 第1 回, 2012. 
0

用語集

4AT, automatic transmission
4速段
AD, analog digital
ATCU, automatic transmission control unit
CAN, Controller Area Network, ISO 11898-1,-2
CR, code review
Duty、デューティ比、一定周期のうち信号がOnになっている比率。モータなどが加熱しないような値を仕様に記載している。
EZ ,
HW, hardware
I/F, interface
IC, interrupt
MISRA,
ms, miri second、ミリ秒
NM
NO
OT
PL,project leader
PM, project manager
PWM, pulse width modulation,
SW, software
SY, system
TH
インプットキャプチャ, input capture
コーディングガイドライン
システムイニシャライズ, system initialize, システムのデータ領域、プログラム領域などの確保、初期設定値を読み込み設定するなど主たる処理を実行できる状態にする
センサ、
ソレノイドsolénoïde, 3次元コイル。電磁石の働きをする。
ソレノイドバルブ、電磁弁solenoid valve、電動弁に比べて動作が速い。基本動作は全開か全閉。
ノイズ除去、ローパスフィルタ、ハイパスフィルタ、両方に対応するバンドパスフィルタを使うことがある。
パルスカウント
パルスジェネレータ
フェールセーフ
ホール素子,ホール効果で磁束密度を測定するセンサ
マイコン
メイン処理
リップル,ripple, 電流変動・電圧変動などの変動。さざ波。
ワーニングランプ,
温素正規化
温度検出サーミスタ
回転数演算
割込み
基板,
情報演算
定周期,
電圧変換,
波形成形
変速タイミング
油圧制御
0