Linuxプログラミング 2
Linux(特有)のプログラミングってったら やっぱCUIの話だよね? いや、LinuxでのプログラミングといえばOpenOffice.orgのマクロだろ ptraceの代わりになるやつって、いつになったら出るんだ? LinuxだのWindowsだのって面倒だからさ、もうWebブラウザのCanvasにJavaScriptで出力すれば良いじゃん 一通り描画機能がそろっているから、何でもありだよ テキストファイルで書けるし、携帯でもそのまま動く Linux でフラッシュの開発できないじゃん。HTML5で出来るほうがうれしいわ。 ところで、 /usr/bin/ld: Dwarf Error: Offset greater than or equal to .debug_str size ていうエラーがでて悩まされているのだが、これって一般的にどんな理由ででるの? ぐぐっても今一よく分らん。ld か、gcc のバグみたいなんだが、どうなの。 gcc のバージョン上げるほうが、トラブル多いのでやりたくないのだが。 コンパイルオプションかmakefileの中身をみないと判らないかも… >>12 一回make cleanした方が良くね? 直りました。link option 見てたら、リンクライブラリが足りなかったので、追加したら直った。 そういえば、Dwarf Error の下に undefined symbol error が出てたわ。 オープンソースだからと、そういうミスじゃなくて自分の環境を疑ってた。 /dev/ttyS0につながっているケーブルを 抜いて、再度接続するとLinuxってHUPシグナル 勝手に送ってくる? >>12 FlexSDK使えばLinuxでもFlash作れんぞ しかもタダで LinuxでのGCCの使い方がいまいち分からない。。。 だからCのソースファイル→コンパイル&リンク出来ない しかたなくWindowsでBorlandのC++ Compiler 使ってプログラム作成してます。 BCCの方がリンク作業してくれるし、 何かと便利な気がしなくもない。 >>18 eclipseとかanjutaとか使ってみたら。 >>18 gccは普通にコンパイル&リンクしてくれるぞ? 問題あるならエラー晒せよ くだ質で いやです。ほかはともかく、そればっかりは・・・困るというか プログラミングの勉強を始めたいのですが何言語を勉強すればいいですか 目的はTVチューナーのドライバを書くことですが、アナログチューナーなのですぐに使えなくなるのでやっぱやめます じゃあローグライクゲームを作ることにしますが、ローグライクはcやc++で作られてるそうですね じゃあc++にするべきですね?visualstudioみたいなのはLinuxには無いのですか あとまったくの初心者におすすめのサイトを教えてください c++を選ぶのであってるですか?も教えてください >>23 linuxでprogrammingするならCをまず覚えたほうがいい visualstudioっていうのはIDEとかだと思われるけど だいたいvimやemacsのeditorで作業するのが一般的なんじゃないだろうか だ.け.ど、あると思うよいっぱい http://penguin.tantin.jp/mori/category/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%83%BBIDE.html こういう所から好きなのを選ぶといい 選ぶというのは難しいことだけど お勧めは分からない 僕はvimを使ってるから 俺も使い方覚えるのめんどいんでIDE使わずにEmacsだが IDEが標準になるぐらいでないとよいGUIアプリは出てこないだろうな inode直接操作するプログラム 書きたいんだけど ユーザ空間だけじゃ無理かな? Linuxの共有メモリってshmatで帰ってくるアドレスが 作成した時と参照した時に違って帰ってくる。 内容はちゃんと合ってるんだけど(CentOS5.4 x84) Solarisではアドレスも一致しているからポインタなん かも共有しても安全なんだけどね 自己解決 SHM_REMAPってのがあった。 ちゃんと同じアドレスが帰って来ました。 >>23 とりあえず、JavaScriptでFireFox用ゲームでも作っとけ Ubuntu Weekly Recipe:第117回 UbuntuとEmacsでプログラミングをはじめよう(中編)|gihyo.jp … 技術評論社 http://gihyo.jp/admin/serial/01/ubuntu-recipe/0117 >>33 普通に出来るけど、ブラウザ何使ってんの?w C++でzipを解凍したいんだけど、zlibを使わないと解凍できないの? epollとpipeの組み合わせた サンプルってどこかに無いでしょうか? タイムアウト付きのflockってどうやって作ればいいんだろうか >>39 sigintrrupt(SIGALRM, 1)をしてSIGALRMのハンドラを 設定しておき、alarmをかければEINTRでflockを設定時間後に 抜ける。 >>41 なるほど。 スレッド使わない限りそれで大丈夫そうだな。ありがとう。 スレッド使うときはまた別の方法考えるか Ubuntu10.4でコンパイルしたプログラムを CentOS5.3で実行しようとすると以下のようなエラーが出ます。 /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found Ubuntuにインストールされているglibcやglibc/glibcxxの方が新しいから、 というのは分かるのですが、 Ubuntu側で対応(コンパイルオプションを変更するなど)して CentOSでも実行できるようなバイナリを作成することは可能でしょうか。 RH系だったら古いバージョンのコンパイラ、ライブラリが compat-* パッケージで提供されてるけど、deb系ってそういう 概念たしか無いよね? 書き忘れていました。そのプログラムはshared objectも含んでいます… (本体からはdlopenで利用しています) staticリンクを試してみたところ、本体は-staticでコンパイルできました。 ですが、.soの方のコンパイル方法がよく分かりません。 通常は gcc -shared libhello.c -o libhello.so で作成すると思うのですが、これにglibcをstaticリンクしようと思い gcc -shared libhello.c -o libhello.so -Wl,-Bstatic -lc -Wl,-Bdynamic (参考: ttp://jarp.does.notwork.org/diary/200309a.html#200309081) としてみたのですが、 ldd libhello.soの結果は > linux-gate.so.1 => (0x00b23000) > libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00110000) > /lib/ld-linux.so.2 (0x00c0b000) となり、相変わらずlibcがdynamic linkされているようでした。 .soにstaticリンクするにはどうすれば良いでしょうか。 >>47 glibcのスタティックアーカイブが必要なんじゃないかな、と思う。 *.aが入ったパッケージがあればstaticなバイナリが出来ると思うけど。 fedoraではglibc-staticってパッケージに入ってる。 ubuntuはしらん >>47 むり。 # aptitude install gcc-4.1 して、そっちつかえ。 >>48 mainで始まるプログラムは-staticをつけてビルドできています > not a dynamic executable ので、スタティックアーカイブが不足している、ということは無いと思います… (Ubuntuではlibc.aは libc6-devパッケージに含まれるようです。) >>49 無理ですか… ちなみに、本体のexecutableファイルをgcc4.4.2で-staticをつけてコンパイルし、 .soをgcc4.1でコンパイルしてCentOSで実行した場合、 使用されるglibcのバージョンがそれぞれ異なることになると思いますが、 この状況は問題があるのでしょうか。 (サンプルを作ってみた限りでは問題なく動作しているように見えますが) メモリマップって何キロバイトずつ割り当てられるんだっけ? 特定のTCPポートへの接続を監視してログに出力したいのですが WindowsではIP Helper APIというAPIを使って取得できたのですが Linuxの場合はどのようなAPIがあるでしょうか? 何かヒントになるキーワードがあれば教えてください。 マジっすか?LinuxはそういうAPIが無いっすか? なんと。Linuxならこういうのは簡単だと思ったのに Windowsより難しいとは。 それって,プログラム書く必要さえ無いんじゃないか… (UNIX板じゃないんだからちゃんと教えてやれよ.) 何を使うんですか?Linux初めてなんで教えてくださいませ。 >>52 iptablesでSYNパケットがきたらULOGターゲットに飛ばすようにして、 ULOGターゲットから飛んできたnetlinkパケットを捕らえる アプリケーションを作ればいいだろう。 >>64 あるだろ。 Ubuntu なら apt-get source net-tools とか。 #include<net/tcp_states.h> でエラーがでますお Ubuntuの8.04のvmwareバージョンです。 とりあえず、エラーメッセージを一字一句もらさず正確に晒せ コンパイルは gcc netstat.c としてます。 こんなエラーです! netstat.c:5:27: error: net/tcp_states.h: No such file or directory netstat.c: In function ‘scount’: netstat.c:27: error: ‘TCPF_ESTABLISHED’ undeclared (first use in this function) netstat.c:27: error: (Each undeclared identifier is reported only once netstat.c:27: error: for each function it appears in.) なんか gcc netstat.c -I /usr/src/linux-headers-2.6.24-28/include とやったらコンパイルできました。 やばいっす。動きました。 とりあえずポートしか表示されませんでしたけど IPアドレスも表示できればあとはログに落とせますね。 わーい。 -O2 -march=amdfam10 -m32 -free-vectorize で握ったzlibがバグありだこれ 報告すべきかすべきでないか… ちなみにgcc-4.5ね fedora使ってると、rpmの機能のかなりの部分が使えなくなる Xウィンドウ実践技術講座 基礎から応用まで 代1版が92年だしやっぱり内容古いかな ptraceの代わりになる予定のutraceって いつになったら代わってくれるんだ? 誰が舵取ってんの? >>23 Linuxのドライバプログラミングの本を読んでみたけど、えらい難しかった。 しかもバグった場合はパソコンがどうかなっちゃうみたいなことが書かれてあって、 こりゃ無理だと。 >>81 Windowsもドライバーバグってたらきれいな青い画面が見れますよ 何のドライバを作るかにもよる キャラクタデバイスならそんなに難しくないよ。 ブロックデバイスはもう少し難易度高いけど、キャラクタの延長だから 頑張ればなんとかなる。 ネットワークドライバは確かにえらい難しいw デバイスドライバと言ったらUSBドライバだよね。 この説明に多くのページを費やして詳述してくれているものがいいね。 最近だとみんなUSB-シリアルとして認識して通信するので意味ないわ・・・ 低レベルの方の標準入力のファイルディスクリプタの定数って どのヘッダに定義されてたっけ? GtkとQt 新しく勉強するなら どっちがいいですか すみません。 理由もあると助かります どのディストリもGNOMEを採用していて、Qtは追加でインストールなんですけど そういったことも含めてQtになるのでしょうか? >>92 Qtの方が書いてて楽しいから。 あと、ドキュメントが一元で整備されてて更新頻度も高く ライブラリも管理されているので割と安心できる。 日本語化された情報もかなり多い。 欠点は企業開発なのでノキアが死んだらつられて死ぬ 可能性がちょっと高いということか。 >>93 そのときは誰かが引き継いでオープンソース化するんでわないかと Qtのライセンスが怖いですね。企業の利害がからむと特に。 Linuxですらもいくつもの訴訟をかかえているんでしょ? >>96 怖いっていっても誰もあんたなんか相手にせんやろ >>96 ほとんどがFUDだけどな。 Microsoftの、 「うちの特許を侵害している。だけど、どこの部分が特許を侵害してるかは契約結ばないと教えてあげない」 とか、もう完全なカツアゲ >>96 つか、GTKやりたいなら、GTKやったら? GTKもGlade3とかでプログラミングはずいぶん楽になってるし、 今はgtk--も充分使えるしね。 GNOMEの方が標準的なのもおっしゃるとおりだし。 別にGnome-Gtkやってから、Qtやっても大した問題じゃないというか、 その経験は別に無駄にならないよ。 改めて、ああ、こういう切り口もあるんだ、って経験になるはず。 read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる