byteswap-16.h
包含许多程序中使用的宏。在 Ubuntu 18.04 上,此文件是libc6-dev
包并安装到/usr/include/x86_64-linux-gnu/bits
。从 20.04 开始,此文件不再包含在该包中:
$ sudo apt install libc6-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6-dev is already the newest version (2.31-0ubuntu9).
0 upgraded, 0 newly installed, 0 to remove and 51 not upgraded.
$ ls /usr/include/x86_64-linux-gnu/bits/byteswap-16.h
ls: cannot access '/usr/include/x86_64-linux-gnu/bits/byteswap-16.h': No such file or directory
因此,不再可能编译各种程序:
$ make
make --directory=lib/dglib/lib
make[1]: Entering directory '/home/duque004/git/DGGRID/src/lib/dglib/lib'
make[1]: *** No rule to make target '/usr/include/x86_64-linux-gnu/bits/byteswap-16.h', needed by 'DgTriGrid2DS.o'. Stop.
make[1]: Leaving directory '/home/duque004/git/DGGRID/src/lib/dglib/lib'
make: *** [Makefile:14: lib/dglib/lib] Error 2
我不想手动干预系统文件夹来获取这个头文件。它可以以某种方式从存储库中获取吗?
更新:这似乎是一个更普遍的问题。我发现这个包中缺少另外两个头文件(相对18.04):libio.h
和_G_config.h
。
答案1
正如我们从错误报告中读到的https://pad.lv/1888302——这是上游的决定。
所以你必须使用以前稳定的 Ubuntu 18.04 LTS 版本来编译所需的东西。
答案2
将这些文件从Ubuntu18系统复制到Ubuntu20系统可以解决此问题。
该链接包括我从同事的 Ubuntu18 电脑上复制的文件,解决了我的问题。
你需要把它放在你的/usr/include/x86_64-linux-gnu/bits/
例子:
sudo cp byteswap-16.h /usr/include/x86_64-linux-gnu/bits/
sudo cp libio.h /usr/include/x86_64-linux-gnu/bits/
sudo cp _G_config.h /usr/include/x86_64-linux-gnu/bits/
对了,这些文件的有效期只有30天,如果有人找到更好的文件分享网站,可以在答案里分享新的文件链接,谢谢!
回答问题时间:2021 0305