.. _freebsd_programming_tools:
===========================
FreeBSD编程工具
===========================
FreeBSD提供了很多开发工具,例如C和C++编译器以及汇编器,以及经典UNIX工具,如 :ref:`sed` 和 :ref:`awk` 。
FreeBSD提供的解释器(Interpreters)
====================================
FreeBSD提供了一系列解释器(解释型语言):
- BASIC
- Lisp
- Perl
- Scheme
- :ref:`lua`
- :ref:`python`
- :ref:`ruby`
- Tcl和Tk
编译器
========
FreeBSD默认提供 :ref:`clang` ``llvm`` ,所以不需要 ``gcc`` 就可以编写C语言程序并且 :ref:`freebsd_build_from_source`
- 核心系统已经安装了 ``clang`` (llvm) 以及 ``make`` ,所以通常不需要再安装
安装
=======
- 安装必要工具
.. literalinclude:: freebsd_programming_tools/install
:caption: 安装开发工具
构建 :ref:`nvim` 开发环境
===========================
- 下载我自己的 :ref:`nvim_ide` 配置仓库:
.. literalinclude:: freebsd_programming_tools/nvim
:caption: 下载nvim配置
我这里遇到和 :ref:`linux_desktop` 不一样的报错( ``:MasonLog`` 查看)
.. literalinclude:: freebsd_programming_tools/masonlog
:caption: 安装nvim lsp-server 报错
:emphasize-lines: 6
看起来 ``lua-language-server`` 和 ``clangd`` 并不支持FreeBSD? 不可能啊
另外由于路径中没有 ``python3`` (只有 ``python3.11`` 所以还有python比昂管报错,以及访问go下载仓库软件报错
参考 `Use Language Servers for Development in the FreeBSD Src Tree `_ 原来在FreeBSD上,可以使用 ``ccls`` Language server(发行版支持,可以直接用 ``pkg`` 安装),也可以像Linux一样使用 ``clangd`` 但是需要先安装 ``llvm15``
- 在 ``dev`` jail 中安装 ``ccls`` :
.. literalinclude: freebsd_programming_tools/install_ccls
:caption: 安装ccls
这个空间要求很大(2G):
.. literalinclude: freebsd_programming_tools/install_ccls_output
:caption: 安装ccls输出信息
.. warning::
我发现一个困扰: Mason ( ``mason.nvim`` )支持的LSP列表和 ``nvim-lspconfig`` 其实有一些gap:
- 有些LSP在 ``nvim-lspconfig`` 中支持,例如 ``ccls`` ,但是在 ``mason.nvim`` 列表中没有对应项,就无法安装: 也就是在 ``plugins.lua`` 中配置:
.. literalinclude:: freebsd_programming_tools/plugins.lua
:caption: 配置安装LSP
:emphasize-lines: 17
不能设置 ``ccls`` ,只能设置 ``clangd`` ,因为 Mason ( ``mason.nvim`` ) 只支持这个 ``clangd`` 插件安装,才能映射到 ``nvim-lspconfig``
如果要支持更多插件(如 ``ccls`` ),就只能直接使用 ``nvim-lspconfig`` ,不要依赖 ``mason.nvim``
.. warning::
在FreeBSD平台使用 Mason ( ``mason.nvim`` ) 还会遇到很多报错: ``The current platform is unsupported`` ,例如安装:
- ``clangd``
- ``lua_ls``
参考 `Neovim Mason and clangd `_ ,原因是 Mason ( ``mason.nvim`` ) 是一个Linux为主的插件,所以在FreeBSD上有很多问题。虽然能够hack但是得不偿失。所以有人建议改为使用 `helix-editor `_ 来代替nvim,开箱即用,并且支持直接使用系统现有的LSP而不是每次启动来安装LSP
知乎上有一篇 `开始使用 HELIX EDITOR 编辑器 `_ 可以参考入门
安装依赖
-------------
- 根据 ``MasonLog`` 日志,如果要安装 ``ruby_lsp`` ,则系统需要先安装 ``gem`` 工具,在 FreeBSD 上是通过 ``pkg install devel/ruby-gems`` 获得
- 要安装 ``clangd`` ,则需要安装 ``llvm`` ,根据 `FreeBSD 14.3 RELEASE信息 `_ ,当前使用 ``llvm19``
- 修改 ``~/.config/nvim/lua/lsp.lua`` :
.. note::
需要 :ref:`go_proxy`
.. warning::
暂时没有时间继续,后续再研究
参考
======
- `Chapter 2. Programming Tools `_
- `How to Install Development Tools (GCC, CMake, etc.) on FreeBSD Operating System `_
- `Use Language Servers for Development in the FreeBSD Src Tree `_
- `GitHub: ranjithshegde/ccls.nvim `_ 配置ccls语言服务器的neovim插件,待研究
- `how can i install clangd on freebsd? `_
- `Running LazyVim starter on alpine docker container: How do I get lua-language-server running working with Mason? `_
- `failed to install lua-language-server #995 `_ 在alpine linux解决平台兼容性报错的方法,可以借鉴