改めて開発日記スタート(どっちかというと自分用備忘録)1 msys2 DL
何か迷走していますが、自分用と割り切って、株のシストレツールの開発経緯を自分用の備忘録として書いていきます
まずはMSYS2のインストール
ここの上に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をデスクトップにショートカット作成しとく
できたショートカットをクッリクして起動したら
左上のMのアイコンクリックするとメニューがでるので options -> text
で好きなフォントを選べばよろし
とりあえずここまで
kona linux でswapがマウントされていなかった件(UUID編
一つ前の記事が少し中途半端だったので、続編
要は「インストール後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パーテーションを作ったはずなのにマウントされていないことが判明
↑ここを参考に手動でマウント
/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でビルドした記事を書いた
確かにビルドできたしきちんと動いている
ところが別のPCでビルドしたらこけてしまった
違いとしては
ちなみに会社のPCのmingwは gcc 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を衝動買いした
そして kona linux 3.0をインストールしてみた
まあなんとか実用的に使える ¥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
ちなみに自分の場合
- NECのLavie 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