`
kongweile
  • 浏览: 517336 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

编译Android下纯C的静态程序,undefined reference to raise

 
阅读更多

尝试在Android下编译纯C的静态程序,执行gcc -v -static -o sayhi sayhi.c后有3条重要的命令

 

ccl -quiet -v -iprefix /home/carmenloklok/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi/bin/../lib/gcc/arm-linux-androideabi/4.4.3/ sayhi.c -mbionic -fpic -quiet -dumpbase sayhi.c -march=armv5te -mfloat-abi=soft -mfpu=vfp -auxbase sayhi -version -o /tmp/cc1JRQYL.s

 

as -v -march=armv5te -mfloat-abi=soft -mfpu=vfp -meabi=5 -o /tmp/ccqjmzvz.o /tmp/cc1JRQYL.s

 

ld --sysroot=/home/ahsieh/ndk-release/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/sysroot -Bstatic -dynamic-linker /system/bin/linker -X -m armelf_linux_eabi -o sayhi crtbegin_static.o /tmp/ccqjmzvz.o --start-group -lgcc -lc --end-group crtend_android.o

 

我一开始没有执行gcc -v -o sayhi sayhi.c来看.没有在ld的参数里加上 -Bstatic 和 --start-group --end-group .于是会出现 undefined reference to raise .具体的原因没有查出.好像是因为eabi的缘故.一段时间后查一下具体的原因,以及--start-group --end-group的作用.

分享到:
评论

相关推荐

    C生成静态库给C++调用出现undefined reference to ...解决方案_cpp

    在C++程序中调用C编译的静态库时,可能会遇到“undefined reference to ...”错误,这通常意味着链接器无法找到对应的函数定义。要解决这个问题,我们需要理解C与C++之间的互操作性以及编译和链接过程。下面将详细...

    xilinx SDK : undefined reference to “xxx”

    发现我的工程的问题是gcc 链接时找不到库文件,如下图我在gcc链接命令中添加了 -llwip4 (该命令的意思时:指定程序要链接的库lwip4,使用了gcc中的-l命令),顺利的解决我的问题啦,从下图也可以看到gcc的编译...

    解决Android下getifaddrs和freeifaddrs undefined reference 的问题

    总的来说,解决Android下`getifaddrs`和`freeifaddrs` undefined reference的问题,关键在于自定义实现并链接静态库,同时通过JNI在Java层调用。理解这些函数的工作原理,以及Android NDK的编译和链接过程,对于...

    undefined reference to 'pthread_create'的解决方法

    总结起来,当你在Linux环境下编写多线程程序并遇到“undefined reference to 'pthread_create'”错误时,你需要做以下两件事来解决问题: 1. 在源代码中包含pthreads的头文件:`#include <pthread.h>` 2. 在编译命令...

    busybox编译出错的解决方法

    针对前几天,用busybox编译根文件的时候,碰到的问题和解决方法进行总结

    android编译的openssl静态库.a 动态库.so

    本文将详细介绍如何在Android环境下编译OpenSSL生成静态库`.a`和动态库`.so`。 首先,我们有两个关键的脚本文件:`make_static.sh` 和 `make_share.sh`。这两个脚本分别用于编译静态库和动态库。 1. **静态库(.a)...

    CentOS7环境下编译的libwebsockets动态库和静态库

    本篇将详细解析如何在CentOS 7环境下编译libwebsockets动态库和静态库,并探讨其在实际应用中的价值。 首先,让我们了解一下libwebsockets库。libwebsockets是一个C语言编写的WebSocket库,它支持HTTP和WebSocket...

    编译后的android各平台fftw静态库

    - 编译JNI代码:使用NDK编译C/C++代码,将FFTW库链接到你的项目中。 - 调用FFTW API:在C/C++代码中,调用FFTW提供的接口进行DFT计算。 - 在Java层封装:为方便Java代码调用,可以编写JNI接口,将FFTW的功能封装...

    Ubuntu下Qt静态编译以及使用

    本文将详细介绍如何在 Ubuntu 系统下进行 Qt 的静态编译,并使用编译好的静态库来构建应用程序。 #### 二、为什么要进行 Qt 的静态编译? 通常情况下,Qt 提供的是动态链接库(Dynamic Link Libraries, DLLs),这...

    undefined reference to ‘pthread_create’的解决方法

    undefined reference to ‘pthread_create’undefined reference to ‘pthread_join’ 问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,...

    Qt6.22 Mingw64静态编译

    本篇文章将详细探讨如何在Windows环境下,使用Mingw64工具集进行Qt6.2.2的静态编译。 首先,理解静态编译的概念至关重要。静态编译意味着在编译应用程序时,将所有依赖的库(如Qt库)合并到最终的可执行文件中,...

    curl for android (arm, x86所有平台)下的静态库 ubuntu下编译完成

    本篇文章将深入探讨如何在Ubuntu环境下为Android(包括arm, x86等平台)编译静态库libcurl.a,并介绍如何通过Java JNI调用,以实现跨平台的网络通信。 首先,让我们关注标题中的关键信息:“curl for android (arm,...

    android编译openssl静态库.a 动态库.so

    编译完成后,将生成的`.a`或`.so`库文件添加到Android项目的`jniLibs`目录下,然后在Java或Kotlin代码中通过JNI(Java Native Interface)调用C/C++代码,即可在Android应用中使用OpenSSL提供的加密功能。...

    易语言静态编译修复器.7z

    静态编译的主要优点包括:提高程序的独立性,使得程序可以在没有特定版本库的环境下运行;减少安全风险,因为没有外部库,减少了因DLL注入攻击的可能性;同时,由于所有代码都在一个文件中,调试和分析可能会更加...

    cryptopp crypto++ 8.2(2020.3最新版)在 MinGW_64编译的静态库

    cryptopp crypto++ 8.2(2020.3最新版)在 MinGW_64 编译的静态库。源文件在visual studio下编译没有问题,但没有提供MinGW_64的编译环境,需要修改部分源代码才能编译通过

    qt5.12.0静态资源包/Visual Studio 2022 静态编译qt项目/静态与动态编译

    qt5.12.0静态资源包,不支持directx 12版本.因为大部分window7版本以下会无法打开qt应用. 使用方法为: 1.打开最新版visualStudio。创建新工程不打开项目,选择安装qt-plugins.搜索 qt . 然后执行安装,根据提示重启VS...

    grpc-1.30.2 Linux 编译静动态库

    在 centos 7 下使用 gcc 4.8.5 + cmake 3.16.9 编译,包含 bin, include, lib, lib64, share 五个目录,可以直接在 linux C++ 程序中引用。 因为 grpc 编译比较麻烦,且依赖项较多,故而分享一下编译后的版本,本人...

    undefined reference to `SetPduPowerConsumptionCnt’错误的解决方法

    在编程过程中,遇到“undefined reference to `SetPduPowerConsumptionCnt’”这样的错误,通常意味着链接阶段找不到该函数的定义。这个问题出现在C++项目中,涉及到C++和C语言的混合编程,以及可能的链接配置问题。...

    freetype android 编译so库

    在Android开发中,通常使用NDK(Native Development Kit)来编译C/C++库。确保已经安装了与Android Studio兼容的NDK版本,并配置好环境变量。检查`ndk-bundle`目录,确认NDK已正确安装。 3. **配置项目**: 进入...

    android 简单demo实现将c++代码 编译成静态库和动态库

    本教程将指导你如何在Android Studio中创建一个简单的Demo,实现将C++代码编译成静态库(.a)和动态库(.so)。 一、环境准备 确保你已经安装了Android Studio,并且版本支持C++开发(自2.1版本开始,Android Studio...

Global site tag (gtag.js) - Google Analytics