【发布时间】:2021-07-22 13:48:48
【问题描述】:
突然,“make”停止工作:没有生成 *.so php 扩展名;
gcc 已停止工作:没有找到头文件;
Visual Studio 代码开始出现问题:缺少标题。
我已重新安装:glibc、libc6-dev、build-essentials、gcc-multilib 和 g++-multilib。
我已重新安装 Visual Studio Code for Linux Mint。
我已经添加了 Visual Studio 的 configuration.json 的路径(设置-> 搜索 c_cpp_confiuration.json 或类似的,或在设置-> c/c++ 扩展 -> 配置文件下)
{
"window.zoomLevel": -3,
"workbench.colorTheme": "Visual Studio Light - C++",
"editor.minimap.enabled": false,
"files.autoSave": "afterDelay",
"C_Cpp.default.browse.path": [],
"C_Cpp.default.compilerPath": "",
"C_Cpp.default.customConfigurationVariables": {},
"C_Cpp.default.defines": [],
"C_Cpp.default.includePath": [ "/usr/lib/gcc/x86_64-linux-gnu/9/include", "/usr/include", "usr/local/include", "/usr/include/php/20190902", "/usr/include/php/20190902/main", "/usr/include/php/20190902/Zend", "/usr/include/php/20190902/TSRM", "${workspaceRoot}", "$(VC_IncludePath)", "$(UniversalCRT_IncludePath)" ]
}
我已将环境变量C_INCLUDE_PATH添加到
#/etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/drb/lampstack-7.4.11-0/.symfony/bin:/drb/lampstack-7.4.11-0/php/bin:";
C_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/9/include:/usr/include:usr/local/include:/usr/include/php/20190902:/usr/include/php/20190902/main:/usr/include/php/20190902/Zend:/usr/include/php/20190902/TSRM:"
我已经重启了电脑。
Visual Studio 没有显示问题。
但是make 不起作用(不显示任何错误,但不会产生php-extension.lo 和*.la),
sudo make install 不起作用(不显示任何错误,但不产生php-extension.so)
而gcc 找不到头文件。
制作了一个简单的 shell 脚本来设置项目文件夹中的 C_INCLUDE_PATH
#env.sh
#!/bin/bash
C_INCLUDE_PATH="/usr/lib/gcc/x86_64-linux-gnu/9/include:/usr/include:usr/local/include:/usr/include/php/20190902:/usr/include/php/20190902/main:/usr/include/php/20190902/Zend:/usr/include/php/20190902/TSRM:"
export C_INCLUDE_PATH
CPATH="/usr/lib/gcc/x86_64-linux-gnu/9/include:/usr/include:usr/local/include:/usr/include/php/20190902:/usr/include/php/20190902/main:/usr/include/php/20190902/Zend:/usr/include/php/20190902/TSRM:"
export CPATH
echo "set C_INCLUDE_PATH to"
printenv C_INCLUDE_PATH
但是make 不起作用并且gcc 找不到标题。
尝试从命令行设置
$ gcc -I "usr/include/php/201990902:/usr/include/php/20190902/main" tsub76.c
给出与标头不存在相同的致命错误。检查文件夹,标题存在为/usr/include/php/20190902/main/php.h
gcc和make的配置文件在哪里设置头文件的包含路径?
【问题讨论】:
-
PATH 变量用于查找二进制文件/脚本而不是源代码
-
保存包含头文件路径信息的文件在哪里?
-
如果允许,您也可以(在阅读文档后)下载源代码、编译并使用remake。但是 GNU make 的工作原理与文档一致,而且由于它是免费软件,因此您可以下载它、研究它的源代码并改进它
-
我不太了解 Visual Studio Code,但我建议在使用之前阅读 its documentation。你也可以阅读Advanced Linux Programming和syscalls(2)
标签: c linux gcc makefile php-extension