「 linux 」一覧

ラズパイ2で使えたUSB WiFi 2016


前回に続いて Raspberry Pi 2 で使えた USB WiFi 2016版です。
少なくとも手元で動作チェックをして動いたものだけをここに記載しています。

オススメできるのは手軽さから自動でドライバを認識するタイプですね。
自分でドライバを入手・ビルドするタイプはなかなかうまくいかないことが多かったです。

なおここで使用している Raspbian は 2016/09版を使用しています。

usb_wifi_adapters2016

続きを読む


Linux で使えた USB WiFi 2016


USB WiFi を Linux で使おうとすると予想通り大変です。
Windows でドライバなしで使える(標準ドライバ)とかがどれだけ恵まれているかを実感させられます。今回は個人的に試してみて Linux でも使えたものをまとめてみました。

usb_wifi_adapters2016

この記事を書いている段階では生産中止になっていない入手可能なものに厳選しています。

続きを読む


gcc 組込み関数(memcpyとか)のインライン展開抑制


アライメントに寛容な x86 の話ではなく、 ARM プロセッサのお話になります。OSが動いていてソフトウェア例外を処理できるような状況では非アライメントなデータであってもなんとか動くので表面化しませんが、そのアタリをケアしない状況ではプログラムが停止してしまう原因の1つです。

さて非アライメントなデータ列をコピーしたりクリアしたりする際に、memcpy, memset などを使用することがあります。
デバッグ時にはうまく動いていたのに、最適化を有効にしたリリースビルドでは, このあたりでうまく動作せずに例外を出してしまったりすることがあります。

仕方なくこれらの関数の自前版を用意してこちらを使うようにしてしまうのも1つの手です。しかし memcpy, memset などのまま対処することも可能なことがわかりましたのでここで紹介したいと思います。
ここまでに言い忘れてしまいましたが、 gcc を使用した開発環境でのお話です。

原因

そもそも最適化によって何が起こり、正常に動かなくなってしまうのか。この原因は gcc が自分の組み込み関数を使用し、最適化によってインライン展開されてしまうことによります。

インライン展開されてもアライメント寛容なコードであればまだ良かったりしますが、速度重視のために最適化されているのでそうはならないのが現実です。

対策

gcc のコンパイルオプションで実はこのインライン展開の抑制が可能です。
-fno-builtin-(functionname) というオプションになります。なので、 memset,memcpy らを抑制する場合には、 -fno-builtin-memset, -fno-builtin-memcpy といったようなオプションを指定することとなります。


Ubuntu 16.04 で Vulkan を使う


以前には Ubuntu 14.x で Vulkan を試してみました。今は Ubuntu も 16.04 LTS が出てちょっと経ちましたので、これでやってみたいと思います。結論としては、従来よりも安定して導入・使用開始できそうな気配を感じています。

ubuntu-vulkan_vulkanscene

続きを読む



Lenovo Ideacentre Stick 300 に Ubuntu


Ideacentre Stick 300 には Windows がインストールされていましたが、Windows10 にあげてしまう前に、もうちょっと試してみたいということもあって Ubuntu をインストールしてみることにしました。
続きを読む



VisualStudio で for Linux Development


以前に VisualStudio で Linux での開発に向けて色々とやってみましたが、今はまた新しい方法があるようだったので試してみました。今回は Linux 側として Fedora23 を使用してみます。特殊なことはしていないため他のLinux系のものでも適用可能だと思います。

vs_linux_8

これらの環境設定の手順などを説明していきます。 続きを読む


MobaXterm が便利


SSHのクライアントとしては Tera Term を愛用しているのですが、とあることから MobaXterm というソフトを知ったので試してみました。これが便利でしばらく使ってみようと思います。

なにが良いかといいますと、これ単体で Xサーバーが内蔵されており、 OpenGL のアプリケーションも動作させることができた点にあります。このときの様子を撮影してみたので貼ってみました。
mobaxterm_opengl

これは Windows10 上で別PCに Ubuntu 16.04 LTS をインストールしたターゲットに接続して、試してみたときのものとなります。OpenGL アプリとして定番のものを動かしてみました。また OpenGL ES2.0 のアプリも動かしてみました。
どちらも動いていることが確認できます。

1つ残念な点は OpenGL は LLVMpipe によるソフトウェア実装が動いている点ですが・・・動くだけマシといったところですね。

この MobaXterm で設定で OpenGL のハードウェアアクセラレート ON というのが見当たったのですが、有効にしてみたところ妙な挙動になってしまいました。以下のように一見動きそうな感じなのですが、実際に動かすとフリーズしたかのごとく重い動作になってしまい・・・使えませんでした。

mobaxterm-opengl_2

他にもこのMobaXtermのよいところは、ホームディレクトリがすでに sftp で見えているため、ドラッグアンドドロップでファイルをやりとりできるところがあります。今までは別ソフト使っていたりしたのでこの1つに集約することができそうです。


VisualStudio 2015 で Linux アプリの開発&デバッグ その2


前回は単独のプロジェクトでソースコードも1つだったので、
今回はスタティックライブラリを使用しての複数のソースコードで動作を試してみたい思います。

準備

前回はソースコード単独でビルドできる状態だったので、実行体の生成のため gcc を呼び出すコードを書いていました。
今回からは複数のコードやライブラリのリンクと言ったことも考慮するためにこの部分を make コマンドを実行するように変更しました。
これにより Makefile さえエディットすれば、ソースコードの変更に対応できるようになります。注意点としては VisualStudio でのプロジェクトへのソースコードの追加と、Makefile の中身は同期されないので、手動(もしくは他の手段で)同期をとる必要があるかもしれません。ただ大事なのは Makefile なのでこちらをエディットすることを守ればなんとかなりそうです。

具体的にはプロジェクトのプロパティで Build Command Line を以下のように変更しました。(実際にはこれを1行で記入してください)
vs2015-target-linux-use-staticlib-0

またプロジェクトに登録したファイルの転送は考えたくなかったので、Linux で Samba を導入し、共有フォルダに VisualStudio のプロジェクトを作るようにしています。

続いてスタティックライブラリの準備にとりかかります。
続きを読む