make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so'

本文分享了在Ubuntu系统中安装Pangolin遇到错误时的解决办法,主要原因是make编译过程中动态链接库链接失败。通过创建指向libGL.so.1的符号链接,可以修复该问题。

 第一次碰到在ubuntu上装pangolin出现错误,我的心情是崩溃的,搞了半天,终于解决了(差点就去装系统去了,很尴尬)。

 

 很多Linux环境下出现此类Bug时,一般大部分原因是因为make 编译的时候,动态链接库的链接性中断,因此解决方案为添加symlink(符号链接).

  • 建立symlink: sudo ln -s  /usr/lib/libGL.so.1  /usr/lib/x86_64-linux-gnu/libGL.so (之所以链接到libGL.so.1而不是libGL.so可能是为了便于区分)
  • 如果出现错误: ln: failed to create symbolic link '/usr/lib/x86_64-linux-gnu/libGL.so' : File exists

         则删除已有链接: sudo rm  /usr/lib/x86_64-linux-gnu/libGL.so

  • 重新建立symlink: sudo ln -s  /usr/lib/libGL.so.1  /usr/lib/x86_64-linux-gnu/libGL.so

  至此,问题应该解决了。

### Android平台上解决 `No rule to make target` 的方法 在Android开发环境下,当遇到错误消息 `make: *** No rule to make target` 时,这通常是由于Makefile中的某些规则未能正确定义或匹配所导致的。以下是几种常见原因及其对应的解决方案。 #### 文件路径问题 如果指定的目标文件不存在于预期的位置,则会出现此类错误。确认所有涉及的源代码文件确实位于声明它们的地方是非常重要的一步。例如,在下面的例子中,假设有一个名为main.c的C语言源文件缺失: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-world LOCAL_SRC_FILES := main.c helper.c utils.c include $(BUILD_SHARED_LIBRARY) ``` 这里提到三个源文件(main.c,helper.c,utils.c),但如果其中一个比如main.c丢失了就会触发“No rule”。因此要仔细核对每一个列出的`.c`或者`.cpp`是否存在并放置正确位置[^3]。 #### 编译产物残留影响新编译流程 有时候即使修复好了所有的源码配置,但由于之前的失败尝试留下了部分中间状态(.o,.d等临时文件),也可能引发类似的错误提示。建议清理整个项目的构建缓存后再试一次: ```bash $ cd your_project_directory/ $ rm -rf obj/ libs/ *.so $ ndk-build clean ``` 以上命令序列彻底删除了旧有的object files以及library outputs,从而允许NDK重新开始全新的build cycle. #### 错误定义依赖关系 另一个可能性在于Makefile内部关于各个targets之间的相互依存描述不当造成的混乱局面。确保每个module只被define once而且其所需的prerequisites也都清晰明了地罗列出来。像这样简单的例子就不会有问题: ```makefile # Define Module A first since it will be used by others later. include $(CLEAR_VARS) LOCAL_MODULE:=libA LOCAL_SRC_FILES:=source_for_A.cpp include $(BUILD_STATIC_LIBRARY) # Then define another module which depends on above one. include $(CLEAR_VARS) LOCAL_MODULE:=appUsingLibA LOCAL_SRC_FILES:=application_code.cpp LOCAL_STATIC_LIBRARIES:=libA include $(BUILD_EXECUTABLE) ``` 在这里先单独建立了static library(libA);接着再创建executable(appUsingLibA)的时候才引用它作为dependency。如此安排避免了潜在冲突风险[^1]. #### 工具链环境异常 最后还需注意的是,有时即便Makefiles本身毫无瑕疵,但因为缺少必要的build tools(如bison,yacc之类的支持工具)[^4],或者是Fortran compiler之类的特殊情况[^2],也会间接造成"No rules..."类别的报错现象发生。所以请按照具体项目需求预先准备好全部必需品清单,并验证各自版本号是否满足最低要求。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值