重返Linux與C,地獄的又一季

2021-08-29 03:31:21 字數 1830 閱讀 2908

江南白衣

當gm向我拍下一張使用linux與c的遊戲單子時,眼前頓時冒出了蘭波的名篇.......   

幸好,一切墮落都有乙個美好的開始:

1.另類唯美的suse linux 10

windows與linux的百年大戰中,桌面系統這塊向來是windows最高枕無憂的鐵桶江山。不過這次,另類的suse 在上面輕輕的撬了一塊磚。

首先是介面,選了kde、suse-default的外觀主題後,在我這樣的美學形式主義者看來,suse pk winxp絲毫不落下風,對上win2000就是穩勝。

而且,suse帶的一系列k字頭的軟體也不含糊,寫字板kate可以匹敵ultraedit,konsole是很好用的console,kde 即時通訊能同時連通msn等im軟體.....雖然應用的數量還是不夠,但現在google和它代表的主義橫行,越來越多應用移到了網際網路上,只要firefox持續更新,微軟在桌面應用上的優勢就會被稀釋。

不過,suse linux 應該算是linux中的乙個另類。看一下redhat的fedora core 4,就能發現丫還很忠實的保留著linux桌面難看難用的傳統。不過這個另類唯美者可沒兼有低調的美德,google一下就能看到"novell揚言suse 9.3要讓windows下課" 的宣傳。我覺得,那至少先要解決桌面程式的執行速度問題。

2. 萬年不變,詭異莫測的make

雖然suse很好,但很快又要面對make這個傢伙。在我經歷裡,能夠順順利利輸完下面這三行指令,然後安裝完畢的程式太稀有了。

>./

configure

>

make

>

make install

這次要裝乙個使用sdl庫的遊戲,果然又是如此。

首先報找不到libsdl_image.so,結果發現原來/usr/lib裡這個so帶了版本號:libsdl_image_1.2.so,加link搞定。然後又報找不到sdl_image.h,跑去sdl主站下了原始碼補上...

都2023年了,問題還是這樣層出不窮,飄忽不定,團隊裡如果沒有久經摔打的老將,經常會被搞得手足無措,目光呆滯。

3.複雜化的趨勢讓人很害怕的核心模組helloworld

因為要直接操控io口,所以稍稍看一下核心模組的東西。天降一本〈linux 裝置驅動程式  2nd〉中文版,hello.c 很簡單,而且gcc -c hello.c 就能完成編譯。

但輪到我gcc的時候,卻出來兩屏的錯誤。沒想到自己的人品值急降到這個程度,愣了好一陣,才發現這本"中文版"講的是linux kernel 2.4的事情,到2.6已經變天了。只好重新emule一本講kernel2.6的第3版,再配合google,才明白2.6裡hello.c變了,還需要預裝kernel-devel,更需要使用新鮮kbuild系統來編譯:

首先寫乙個不明所以的不完整makefile:

obj-

m :=

hell.o

然後用這條指令來編譯,才得出新的hello.ko 檔案:

/lib

/modules

/`uname -r`

/build m

=`pwd` modules 

更倒霉的是我一開始用的suse 9.3居然沒帶kernel-devel.rpm,搞得我又要用kernel-source,配置、編譯一遍核心....

都一把年紀了,還要為了個helloword被這樣拖著滿場飛奔,實在是糟糕透頂的經歷,而且,2.4->2.6裡複雜化的趨勢更讓我還在門外就覺得有點涼意。  

如果程式世界不是越來越簡單,而是越來越複雜;越來越多東西不能靠過去的經驗發揮同理可證的作用而需要完全重新學習,那我們這些老傢伙的飯碗不是很危險嗎???

乙個邏輯問題的分析 「天堂與地獄的守衛」

最近和朋友討論乙個邏輯問題,據說也是個以前出現過的面試題了。拿出來和大家分享。問題如下 你來到兩道門口,一道是天堂之門,一道是地獄之門 門口都有乙個守衛,只知道守衛乙個只說假話,乙個只說真話。現在你只有一次提問機會,只向乙個守衛問乙個問題,這個守衛對你的問題,只給出 是 或者 不是 的答案。對於無法...

乙個邏輯問題的分析 「天堂與地獄的守衛」

最近和朋友討論乙個邏輯問題,據說也是個以前出現過的面試題了。拿出來和大家分享。問題如下 你來到兩道門口,一道是天堂之門,一道是地獄之門 門口都有乙個守衛,只知道守衛乙個只說假話,乙個只說真話。現在你只有一次提問機會,只向乙個守衛問乙個問題,這個守衛對你的問題,只給出 是 或者 不是 的答案。對於無法...

又乙個Linux的雙向stateless NAT

如果看一下iproute2的help,就會發現在route section中有乙個nat action,其中via的引數給出了轉換的位址。具體的配置就不說了,只提出兩點,第一,iproute2的stateless nat需要policy routing的參與,第二,它在2.6核心中被去除了 具體資訊...