我需要调和这两个事实:
- 在Linux上工作时,我感到不舒服。
- 我需要为Linux开发软件。
背景知识:我在Windows上有10年以上的编程经验(几乎全部是C / C ++,但也有一些.NET),我在家里使用FreeBSD大约3年左右(然后不得不回到Windows),而我从来没有对Linux感到过运。现在,我必须为Linux开发软件。我需要一个计划。
在Windows上,您只需要了解一种编程语言,要针对其进行编码的API,您的IDE(VisualStudio)以及一些非常基本的故障排除工具(Depends,ProcessExplorer,DebugView,WinDbg)就可以摆脱困境。其他一切都是自然而然的。
在Linux上,这是一个非常不同的故事。如果我从Firefox插件链接到哪个DLL(抱歉,共享库),我怎么会知道呢?在Linux中相当于在源中插入__asm int 3 / DebugBreak()并运行程序,然后让OS调用调试器,这等效于Linux?为什么地狱版本的构建使用称为appLoader的东西,而调试版本的工作却有所不同?最糟糕的是:如何配置Linux开发环境?
因此,考虑到仇恨通常与不够了解有关,您会建议什么?我对Emacs和GCC没问题。我需要以Linux管理员/用户的身份接受教育,并且需要学习适当的故障排除工具(strace很酷,顺便说一句),与我上面提到的工具相当。
我需要从头开始做Linux吗?还是我只需要阅读一些书籍(我已经阅读了Kernighan的“ UNIX编程环境”和Stevens的“ Advanced Programming ...”,但我需要学习一些更实际的东西)?还是我需要在家用计算机上安装一些Linux发行版?
man
是您的朋友。我会man nm
并且man ld
以此作为起点。