热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

交叉编译libupnp

交叉编译libupnp1.从Makeconfig中拿到CFLAGS,LDFLAGS等编译参数,执行.configure然后再make,makeinsta

交叉编译libupnp

1.从Makeconfig中拿到CFLAGS,LDFLAGS等编译参数,执行./configure 然后再make,make install。
2.拷贝编译出来的动态库和静态库到lib_release下对应的文件夹中,编译出来的库的路径在./configure –prefix=”路径”下。
3.在system/project/TV010XX/Makefile中添加编译选项,并指定头文件和库文件的路径,由于目标机并没有对应的动态链接库所以添加选项-static。如下:

  1. INCLUDES += -I../../open_source/libupnp/libupnp-1.6.20/install/include/upnp
  2. LIBS += -L../../lib_release/prebuilt_$(TOOLCHAIN_VER)
  3. #LIBS += -L../../open_source/libupnp/libupnp-1.6.20/install/lib
  4. LDFLAGS += -Wl,-rpath,../../lib_release/prebuilt_$(TOOLCHAIN_VER)
  5. LIBS += -lthreadutil
  6. LIBS += -lixml
  7. LIBS += -lupnp
  8. LDFLAGS += -static

4.调用upnp,只需要在文件头添加#include "upnp.h"即可,经测试可正常运行。

5.具体Makefile,和preconf.sh。

  1. include ../../include/MakeConfig
  2. LIBUPNPDIR=libupnp-1.6.20
  3. CURRENT_FOLDER=$(shell pwd)
  4. MYNM=$(TOOLCHAIN_ROOT)/$(HOST)-nm
  5. MYCFLAGS = $(TOOLCHAIN_DIR)/include
  6. MYLDFLAGS = $(TOOLCHAIN_DIR)/lib
  7. all:
  8. cd $(LIBUPNPDIR); $(SH) CC_TOOLCHAIN=$(_CC) CXX_TOOLCHAIN=$(_CXX) RANLIB_TOOLCHAIN=$(MYRANLIB) LD_TOOLCHAIN=$(MYLD) STRIP_TOOLCHAIN=$(MYSTRIP) AR_TOOLCHAIN=$(MYAR) NM_TOOLCHAIN=$(MYNM) CFLAGS_TOOLCHAIN=$(MYCFLAGS) LDFLAGS_TOOLCHAIN=$(MYLDFLAGS) MYPREFIX=$(CURRENT_FOLDER)/$(LIBUPNPDIR)/install ../preconf.sh $(HOST) ;$(MAKE);$(MAKE) install
  9. cp -fd $(LIBUPNPDIR)/install/lib/lib* ../../lib_release/prebuilt_$(TOOLCHAIN_VER)
  10. #cp $(LIBUPNPDIR)/upnp/inc/*.h $(LIBUPNPDIR)/ixml/inc/*.h $(LIBUPNPDIR)/threadutil/inc/*.h ../../project/TV010_EuroDVB
  11. clean:
  12. cd $(LIBUPNPDIR);$(MAKE) clean

  1. #!/bin/sh
  2. echo "--------- CURL BUILD ENVIREMENT ----------"
  3. echo "CC : $CC_TOOLCHAIN"
  4. echo "CXX : $CXX_TOOLCHAIN"
  5. echo "LD : $LD_TOOLCHAIN"
  6. echo "RANLIB : $RANLIB_TOOLCHAIN"
  7. echo "STRIP : $STRIP_TOOLCHAIN"
  8. echo "AR : $AR_TOOLCHAIN"
  9. echo "NM : $NM_TOOLCHAIN"
  10. echo "CFLAGS: $CFLAGS_TOOLCHAIN"
  11. echo "LDFLAGS: $LDFLAGS_TOOLCHAIN"
  12. echo "HOSTNAME: $1"
  13. echo "prefix: $MYPREFIX"
  14. echo "------------------------------------------"
  15. export RANLIB=$RANLIB_TOOLCHAIN
  16. export CC=$CC_TOOLCHAIN
  17. export CXX=$CXX_TOOLCHAIN
  18. export AR=$AR_TOOLCHAIN
  19. export LD=$LD_TOOLCHAIN
  20. export STRIP=$STRIP_TOOLCHAIN
  21. export NM=$NM_TOOLCHAIN
  22. ./configure --host=$1 --prefix=$MYPREFIX


null



转:https://www.cnblogs.com/iceiceiceice/p/66014eed7ef07aec622969cd1043191e.html



推荐阅读
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 本文深入探讨了 Vue.js 中异步组件的应用与优化策略。首先,文章介绍了异步组件的基本概念及其在现代前端开发中的重要性。为了确保最佳实践,建议使用 Webpack 作为模块打包工具,因为 Browserify 默认不支持异步组件的加载。接着,详细解释了异步组件的使用方法,并提供了官方文档的相关链接以供参考。此外,文章还讨论了多种优化技巧,包括代码分割、懒加载和性能调优,以提升应用的整体性能和用户体验。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • 大数据应用实例:电视收视率分析企业项目实操第二篇
    本文继续探讨大数据在电视收视率分析中的应用,详细介绍了如何在CentOS系统中进行防火墙管理。针对CentOS 6.5及更早版本,提供了具体的命令操作步骤,包括停止防火墙服务和禁用防火墙启动。此外,还深入讨论了这些操作对数据传输和系统安全的影响,为实际项目实施提供了宝贵的技术参考。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 如何构建基于Spring MVC框架的Java Web应用项目
    在构建基于Spring MVC框架的Java Web应用项目时,首先应创建一个新的动态Web项目。接着,需将必要的JAR包导入至WebContent/WEB-INF/lib目录下,确保包括Spring核心库及相关依赖。如遇缺失的JAR包,可向社区求助或通过Maven等工具自动下载。正确配置后,即可开始搭建应用结构与功能模块。 ... [详细]
author-avatar
finaokas_261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有