Articles of gcc

如何从已编译的二进制文件中删除字符串(.so)

如何从/混淆编译的二进制文件中删除字符串? 目标是避免让人们阅读里面的函数/方法的名称。 它是一个动态库(.so),使用NDK工具(包括GCC)从Android的C ++代码编译 我用-O3编译并且已经使用arm-eabi-strip -g mylib.so来删除调试符号,但是当我执行strings mylib.so所有函数/方法的名称仍然可读。

如何在Android NDK项目中使用预编译头文件?

我正在将一个大型C ++项目从Visual Studio移植到GCC for Android。 由于文件数量很多,编译时间是冰冷的。 我想设置一个预编译的头文件,但我发现GCC文档令人困惑。 我有stdafx.h文件,该文件应该是预编译头文件的基础,并且是所有.cpp源代码中的第一个包含文件。 有没有人知道我需要添加到Android.mk以使其工作?

如何与Android的静态增强库链接?

我有问题移植并使用Android-ndk-r5b将boost库链接到android。 我首先使用以下步骤构建boost库(没有mpi,python): 1.在boost_1_46_0 \ libs \ thread \ build中注释第53行: #if [os.name] =“NT”{api = win32; } 2.在boost根目录中创建文件user-config.jam androidNDKRoot = ../android-ndk-r5b; 使用gcc:android4.4.3:$(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-g ++。exe: –sysroot = $(androidNDKRoot)/平台/机器人-3 /拱形臂 -mthumb -os -fno严格混叠 -02 -DNDEBUG -G -fexceptions -frtti -lstdc ++ -I $(androidNDKRoot)/源/ CXX-STL / GNU-的libstdc ++ /包括 -I $(androidNDKRoot)/源/ CXX-STL / GNU-的libstdc ++ /库/ armeabi /包括 -D__GLIBC__ -DBOOST_NO_INTRINSIC_WCHAR_T $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ar.exe $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-ranlib.exe […]

Android NDK的最新C ++ 11function

我正在尝试使用Android NDK的C ++ 11线程工具,但不知道如何使它使用最新的编译器。 我有Clang 3.2并且可以构建iOS应用程序。 我想知道是否有办法用Android NDK做到这一点? 如果没有,那么我应该如何用gcc 4.8构建?

Android NDK使用哪种编译器?

我正在为Android应用程序编写基于ARM NEON的代码,而我正在努力解决某些编译器标志无法识别的问题。 我后来意识到这些标志的支持最近才添加,而且我的GCC版本更旧了。 我正在Windows上做整件事,并受到Cygwin提供的版本的限制。 这是我的问题:在我尝试在我的Windows机器上构建GCC 4.6.0并让Cygwin喜欢它之前,它会对我有用还是NDK使用自己版本的GCC,我的升级根本不会影响它? 如果是,是否可以告诉它使用不同的编译器?

如何为Android编译GCC?

有没有办法为Android编译GCC? 基本上,在Android终端模拟器中可以访问GCC编译器,并且能够编译将在C或C ++源文件的android上运行的二进制文件。 我的意图是使用它并最终安装make。

arm64和aarch64之间的差异

我有两个“解锁”设备,一个iPad mini 3和一个Galaxy Edge 6,它们都有一个终端和一组简单的unix命令。 我认为这两款设备都配备了arm64处理器,但是当我运行时 uname -a 在两台设备上我都得到了以下内容: 对于iPad mini 3: xxxxs-iPad:/var/mobile root# uname -a Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP 对于三星Galaxy s6 Edge: u0_a203@zerolte:/ $ uname -a Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux 如果我没有错,那么J85mAP和GNU […]

GCC在-std = gnu ++ 0x和-std = c ++ 0x之间有什么区别?应该使用哪一个?

在GCC 4.4.3(对于Android)中使用-std=c++0x时,我遇到了麻烦: // using -std=c++0x #include uint64_t value; // error: ‘uint64_t’ does not name a type 但是使用-std=gnu++0x可以: // using -std=gnu++0x #include uint64_t value; // OK 与C ++ 0x不兼容吗?

想要编译本机Android二进制文件我可以在手机终端上运行

我已经尝试了几天来编译一个本机ARM Android二进制文件,它将使用终端应用程序在我的手机上执行。 我想生成与手机上安装的标准Posix二进制文件相同types的二进制文件,如ls,mkdir等。我已经在Mac OS X下载了Android NDK,并且能够无错误地编译简单的ELF二进制文件。 但是,当我将它们转移到手机时,它们总是会出现段错误。 也就是说,在GCC中使用-static编译时会出现段错误。 如果我不使用-static,他们会抱怨没有链接等等。简单地说,它们不起作用。 我的假设是它们没有正确链接到Android标准C库。 即使我将我的二进制文件与NDK提供的libc链接,它们仍然无法正常工作。 我读到Android使用Bionic C库,并试图为它下载源代码,但我不确定如何从它构建一个库(它似乎是所有ARM程序集)。 手机上的Android C库是否与Android NDK提供的库不同? 包含在NDK中的那个不允许我编译我可以通过终端执行的本机二进制文件吗? 非常感谢任何指导! 更新: 我终于在Mac OS X上使用GCC 4.7.0了解它。我下载了Bionic标头,然后使用Android NDK附带的C库编译了一个动态链接的二进制文件。 我能够使用手机的C lib(二进制为33K)获得一个测试应用程序在手机上工作。 我还尝试静态链接NDK的C库,这也有效。 为了使这一切工作,我必须将-nostdlib传递给GCC,然后手动将crtbegin_dynamic.o和crtend_android.o添加到GCC的命令行。 它的工作原理如下: $CC \ $NDK_PATH/usr/lib/crtbegin_dynamic.o \ hello.c -o hello \ $CFLAGS \ $NDK_PATH/usr/lib/crtend_android.o 对于静态二进制文件,请使用“crtbegin_static.o”。 这在crtbegin_dynamic.S / crtbegin_static.S源中进行了解释。 对于这个实验,我只使用普通的’ol GCC 4.7.0和Binutils 2.22。 我还使用newlib编译了GCC,但我实际上并没有将我的ARM二进制文件与newlib链接起来。 我强迫GCC / ld直接链接到随Android NDK提供的libc,或者在动态二进制文件的情况下,链接到手机上的libc。

Bambuser ffmpeg – “arm-linux-androideabi-gcc无法创build可执行文件”。

我知道这可能是一些重复的问题。 但这些线程的答案不帮助我。 我想使用Bambuser的ffmpeg编译android的ffmpeg库。 我下载了客户端版本1.3.7到1.6.0的存档。 来自bambuser。 我遵循REAME给出的指示。 当运行./build.sh我遇到以下错误 arm-linux-androideabi-gcc is unable to create an executable file. C compiler test failed. If you think configure made a mistake, make sure you are using the latest version from SVN. If the latest version fails, report the problem to the ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net. Include […]