應該如何熟悉GNU工具鏈?例如GCC Makefile GDB

時間 2021-05-12 02:04:35

1樓:

除錯多用printf,少用gdb。

上面乙個答主提到了,看手冊,不過我推薦看英文的手冊。

看一看《The Art of Unix Programming》。

2樓:馬巨集菩

更新:答完以後重新看了一遍題目發現我想得太多了一點。看起來題主只是想要大概知道一下這些工具鏈怎麼用(雖然「全套」這個詞看著有點嚇人)。

那麼別被我下面的話嚇倒。就多看看 Github 上各種開源專案是怎麼 build 、 install 的,然後有實際經驗之後大概翻翻手冊,就對整個系統有個大體概念了。 Don't panic!

首先來一句沒有幫助的話:絕大多數情況下,都沒有必要主動去學習這一套工具鏈,尤其是 autohells (哦不,是 autotools )。新專案的話,可以直接來 CMake 之類;即使是已有專案,大部分時候小專案 Makefile 都不長,用的奇技淫巧不多看看就知道,大專案會有詳盡的 README/INSTALL ,照著用就行,一般不需要動手修改。

如果真的有需求(比如像我之前的實習),那麼可以考慮兩個大 playground :

1. 打包

2. LFS

個人比較熟悉而且做過的是 1 。簡單來說就是找一些開源專案,去打 deb/rpm 或者是 AUR 包。由於需要符合發行版的 convention ,很多時候不得不需要 patch Makefile ,或者 reconfigure 。

找的開源專案可以是比較複雜使用了 autotools 的,這樣就可以照著 autotools 的很多 guide (然而不幸的是沒有哪個寫得真的很好的……)參照例項來理解。還可以試著找官方源裡已經有的包,自己打個新版或者有 custom patch 的,然後再對照官方的 rules/spec 來看看。Debian/Fedora 倉庫裡很多包的構建都有些「巧妙」(dirty)的 hack ……

2 的話就更是需要自己編譯安裝一堆專案,使用的 toolchain 千奇百怪。不過有個缺點是只要「裝上就行」,可能不像 1 那樣需要追求 elegant 、 uniform ,需要改構建過程的機會更少(大部分時候就是 follow document 打幾條命令)。不過由於我其實沒有完整做過,這也只是我的猜想而已。

最後:我真的不覺得現在這個世界上有幾個人完整明白 autotools 的,尤其是那一套巨集語言……

3樓:張杰

zhangjiee.com/blog/gcc-compile-and-makefile-resource工具類的東西,大部分功能是不用的。入門的話要結合應用場景,經常用的多查資料。

Linux 下的東西很零散的,沒有一本書可以講的很全。

工具類產品應該怎樣運營?

媒介匣 工具類的特點是使用者粘性太小,應該從這幾方面入手,打造屬於你使用者的圈子,營造出一種人性化的氛圍 1.工具類產品顏值一定要一馬當先2.工具類產品體驗營銷一定很奏效 工具類產品,肯定是讓使用者拿來使用的。因此這裡,建議可以採用體驗式營銷,就是聚集使用者讓使用者體驗,聚集地可以是社群,也可以是線...

如何看待 React to Vue 工具

趙啟明 能不轉當然是不轉了,但是你不需要轉不代表別人不需要轉,你現在不需要轉不代表以後不需要轉。我覺得有些人需要擺正自己對於價值的看法,只從量的角度考慮太片面了。 已登出 我也認為沒有意義,原因如下 vue或者react其入口都是把某個dom換成自己的元件,那麼你要跳著用,直接頁面上dom A用vu...

應該和自己很熟悉的人談戀愛嗎?

永不失聯 一看就是學生,跟同學接觸接觸多了,就感覺處的來,總感覺可以進一步發展。然後嘛,80 你們會在一起。只要一方主動提出,另一方答應只是時間問題。你們會很甜很甜的開始,滿滿的幸福,開始籌畫這,計畫那。什麼都很新鮮,對什麼都好奇。大概半年,也許4個月。反正會很快的打算結束這斷關係,因為你們這感情就...