53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

来訪ありがとうございます
シストレツールを自作してました
自分用の記事が多いのであまり役には立たないブログでした

f:id:sucar:20150414193802p:plain

自作システム詳細目次

3 gcc(mingw64) のインストール

さて、msys2 は無事インストールでき、立ち上がっているが、実はまだ開発環境が入っていない

qiita.com

↑ここが詳しくてわかりやすかった

ここの

64bit 版 gcc のインストール

を参考にpacmangcc を入れてみたとこ

$pacman -S mingw-w64-x86_64-toolchain

ググればいろんな記事が出てくるので、参考にしながら、環境を整えていけばよろしいのですw

 

2 msys2 更新

msys2 の魅力は pacman を移植してありこれで簡単にパッケージを最新版に保てるのですが、バージョンによってやり方が異なるので???となる

ようやく一番わかりやすい情報にたどり着いたのでリンクを張ります

qiita.com

2016/11/3現在の最新版では

update-coreコマンドは削除されているので

$ pacman -Syuu

でいいようです

 

改めて開発日記スタート(どっちかというと自分用備忘録)1 msys2 DL 

何か迷走していますが、自分用と割り切って、株のシストレツールの開発経緯を自分用の備忘録として書いていきます

まずはMSYS2のインストール

MSYS2 installer

ここの上に2つあるけど

-i686- の方が32bit

-x86_64- の方が64bit

自分は64bitの方が使いたいので-x86_64- の方を落としました

20161025版です ただ もう一つのPCには2016の9月版が入ってます

もっともMSYS2は pacman コマンドで随時最新版に更新できるのであまり気にしなくてもいいかも

また初代のMSYSというか、これとは違うMSYSもあって

MinGW | Minimalist GNU for Windows

ここからDL可能です

現在の私のシステムはMingw+初代MSYSで動いてるんだけど、将来を考えてMSYS2環境に移行をしようかと・・・

まあその先はLinuxで動かしちゃえなんですけどw

とりあえずDLしてインストールしました(インストールはそんな迷うところはないので手順とかは省略 単に落としたexeを実行すればよいので)

もう一つのPCには既にいろいろ環境構築されているんだけど、一応備忘録のため再度手順を纏めておこうと

とりあえずこの記事でMSYS2のDLとインストール終了

あと、デスクトップにショートカットおきたい派なので

\msys64\mingw64.exeをデスクトップにショートカット作成しとく

できたショートカットをクッリクして起動したら

f:id:sucar:20161103144553p:plain

左上のMのアイコンクリックするとメニューがでるので  options -> text 

で好きなフォントを選べばよろし

とりあえずここまで

 

kona linux でswapがマウントされていなかった件(UUID編

一つ前の記事が少し中途半端だったので、続編

abenomix.hatenablog.com

要は「インストール後swapがマウントされてなかったら自分で設定してね」ということで

# mkswap /dev/sda4 または $ sudo mkswap /dev/sda4

(/dev/sda4 はswapにしたいパーテーション)でswapを作り

/etc/fstab を編集して

/dev/sda4 swap swap defaults 0 0

と書いとけばいいよ ってことです

ただ、現在は/dev/xxxx ではなく UUID=xxxxxx で記述するのが推奨されているらしい

で、UUIDの調べ方ですが、

# blkid  または $ sudo blkid

で表示されるのでそれを使えばOK

で(私の環境の場合)は

UUID=a4c9b36e-ce37-4c02-96ce-5e948dd77477 none swap sw 0 0

と書いたらOKだった

実はそもそもインストール直後の/etc/fstabがなぜか

UUID=swap none swap sw 0 0

ってなってて????

本来UUIDが書かれる部分がswapと書かれたのがマウントされない原因だったと・・・

などと偉そうに書いてますが、正直なところUUIDって何??? とググって勉強になったというわけです

ただひとつわからないことがあって

UUIDを使わない書式だと

/dev/sda4 swap swap defaults 0 0

UUIDを使う書式だと

UUID=a4c9b36e-ce37-4c02-96ce-5e948dd77477 none swap sw 0 0

と赤字の部分が異なるのだが????

この辺がよくわからないのですが、とりあえず、現在推奨のUUID記述を見様見真似でマスターしました ということで・・・

 

kona linux でswapがマウントされていなかった件

kona linux 3.0 light をインストールしたのですが、インストール時にswapパーテーションを作ったはずなのにマウントされていないことが判明

kazmax.zpp.jp

↑ここを参考に手動でマウント

f:id:sucar:20161012211957p:plain

/dev/sda4 がswap パーテーションなので、

suでrootになって

# mkswap /dev/sda4
# swapon /dev/sda4

で、手動でswapをマウントできた

あとは、/etc/fstab を編集すればいいはず

/dev/sda4 swap swap defaults 0 0

と記述してうまくいった

しかし、UUIDって何? 状態w

いろいろググってなんとなくわかってUUIDでも無事設定できた

UUIDは

# blkid

で調べられる

linuxインストールするの10年以上ぶりだけど、いろいろ進化してるのね?

 

TckTkのmingwでのビルドがエラーになる件

前にTclTk8.6.6をmingwでビルドした記事を書いた 

abenomix.hatenablog.com

確かにビルドできたしきちんと動いている

ところが別のPCでビルドしたらこけてしまった

違いとしては

  • ビルドできた環境  gcc 4.8.1
  • ビルドできなかった環境  gcc 5.3.0

ちなみに会社のPCのmingwgcc 4.9.3 でこれもビルドがこけた

本当にgcc のバージョンだけが原因かどうかは不明だが、些細な?環境の違いでビルドできたりできなかったりするのは確かです

mingwを今DLしてセットアップすると、gcc 4.8.1にならないので今後のことを考えるとちょっと困った事態になった感じ

ちなみにgcc5.3.0になっちゃったのは mingw-get upgrade を実行したらgccもupgradeされたということです

D:/MinGW32/msys/1.0/home/scr/tcl8.6.6/generic/tclInt.h:115:38: error: 'uintptr_t' undeclared (first use in this function)
# define PTR2UINT(p)((unsigned int)(uintptr_t)(p))
というエラーで

'uintptr_t'なんて知らん 宣言しろボケ

ってgcc様がのたまう

しかし、win/configureは

checking for uintptr_t... yes

って言っている

uintptr_t についてまったくわからなかったがいろいろググってなんとなく理解はできた

32bit 環境と64bit 環境でアドレス幅が違うからその違いを吸収するためにあるらしい

非常に困ったが自力で何とかしてみたので以下参照

 

<解決法1> uintptr_t を消すw

非常に強引だけど、よくわからないながら、uintptr_t さえなければいいのでw

エラーで落ちたとこは

# define UINT2PTR(p) ((void *)(uintptr_t)(p))
# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p))
となっていて2重にキャストしている

なので強引に

# define UINT2PTR(p) ((void *)(p))
# define PTR2UINT(p) ((unsigned int)(p))
としてみるw

結論からいうとこれでビルドは成功し、動作もOKだった

ただ、あまりに強引すぎるので、確認のため

test.c

#include <stdio.h>
#include <stdint.h>

void main(void) {
  printf("%d%d%d\n",sizeof(void*),sizeof(unsigned int),sizeof(uintptr_t));
}

テストプログラムを作って実行してみると

$ gcc test
$ a
444

と全部4(つまり32bit)となるので、一応問題はなさそうである

 

<解決2>

しかし、解決1は気持ち悪いのでちゃんとした解決法がないかいろいろ考えてみたんですが・・・

仮に自作ソースでundeclaredと言われたら原因として何を考えるか?

というと

ヘッダを#includeするのを、つまり #include <stdint.h> 忘れてました

 となるのでまさかと思い調べてみると

tclInt.hの頭に

#include <stdint.h> 

がないことが判明!

半信半疑で

#include <stdio.h>の次の行に

#include <stdint.h>を追加してみると・・・

無事にビルドできました

これはバグなんだろうか?

でも、それではなぜ gcc4.8.1ではビルドできたのだろうか?

なぞは深まるが解決したからまあいいかw

 

 

 

 

linuxがブートしなかったときはとにかく喋らせろ

本家ブログに書いたが中古PCを衝動買いした

supercar.hatenablog.com

そして kona linux 3.0をインストールしてみた

supercar.hatenablog.com

supercar.hatenablog.com

まあなんとか実用的に使える ¥3,240ですがw

インストールの詳細はもっとちゃんとした記事がググれば出てくるので、

linuxがブートしなかったとき

どうすればいいのか? について書いてみたい

最近のlinuxはライブCD(DVD)になってて、インストールしなくてもお試しができる場合が多い

ライブCD(DVD)の入手は雑誌の付録とかもあるけど、ネットからisoファイルDLして自分で焼く

まあCD作らずUSBメモリに入れてブートさせることもできるけど、そこはお好みで

(この辺はググれば出てくるので詳しく知りたい方は適当にググってください)

とにかく、isoファイルをブート可能なメディアに焼いてブートさせるのが第一関門

で、linuxがブートしなかったとき

だけど・・・・

ここでのlinuxがブートしないとは「ブートローダーはブートしてるけど、linuxカーネルが立ち上がってデスクトップ画面まで行かない」という意味で、biosからブートローダーが立ち上がらない場合は、biosのブートの優先順位のあたりをチェックください

とにかく・・・・

まずは、ブートローダー画面が出たら、そのまま待つでもなく、enterを押すでもなく

Tabを押す

すると、下に何やら出てくるので、quiet splash と書かれているところまでカーソルを動かし(普通にカーソルキーで動く)これを消す (普通にBSでもdeleteでも使えるはず)

その後、徐にEnterを押す

これで、ブートの過程を喋って(画面に出して)くれるので

何のエラーで止まったかがわかる

というわけである あとは、その情報からいろいろググってみれば、何とかなる(こともある)という話w

ちなみに自分の場合

  • NECLavie light
  • kona linux 2.3 は普通にブートok
  • kona linux 3.0 basix 3.0 KLUE 2.0 は3つともブートせず
  • ただ、3つとも irqが何たら irqpollで試せ みたいなメッセージが出る
  • TABキー押して オプションirqpollを書き込んでブート
  • それでもブートせず
  • TABキー押して オプションquiet splashを消してブート
  • ズラズラとメッセージが出るが バックライトが何たらで止まる
  • いろいろググって
  • acpi_backlight=vendor をオプションに追加
  • 無事起動^o^/
  • kona linux 3.0 インストール

って感じでした

追記)今試したらirqpollはなくてもブートしました

少し戸惑うのは、最初キーボードはusキーボード配置になってるので = _ が刻印どおりでないってとこかもw

まあ、右側のキーを適当に押して(+shihtも試して)いけばそのうち出てくるから何とかなります

最後はインストール後のGRUB2の設定がややこしいけど、これもググって調べれば何とかなります(vi操作方法忘れてて困ったw)

仮想環境ではなくHDDに直接linuxインストールするのは本当に久しぶりでしたが、ブート周りはややこしいので、安いジャンクPC購入してwinを消して入れるというのが一番いいかも(失敗しても元が安いので)

linuxが実用的に使えれば、リサイクルショップのジャンクPCが宝の山に見えてくるから不思議w vista 2017年4月11日でサポート切れる⇒ジャンクPCw