我正在使用本教程构建ios工具链.当我运行命令make ENABLE_OPTIMIZED = 1时,我得到了这个输出.
llvm[0]: Reconfiguring with /home/connor/llvm-svn/configure
config.status: creating Makefile.config
config.status: creating llvm.spec
config.status: creating docs/doxygen.cfg
config.status: creating tools/llvm-config/llvm-config.in
config.status: creating include/llvm/Config/config.h
config.status: creating include/llvm/Support/DataTypes.h
config.status: include/llvm/Support/DataTypes.h is unchanged
config.status: creating include/llvm/ADT/hash_map
config.status: include/llvm/ADT/hash_map is unchanged
config.status: creating include/llvm/ADT/hash_set
config.status: include/llvm/ADT/hash_set is unchanged
config.status: creating include/llvm/ADT/iterator
config.status: include/llvm/ADT/iterator is unchanged
config.status: executing setup commands
config.status: executing Makefile commands
config.status: executing Makefile.common commands
config.status: executing examples/Makefile commands
config.status: executing lib/Makefile commands
config.status: executing runtime/Makefile commands
config.status: executing test/Makefile …Run Code Online (Sandbox Code Playgroud) 我试图了解独立工具链的含义.以下是我的发现.一个工具链,可以使用所有配置,即正确路径中的系统头和库.对于Android,它还会在工具链可以查找的路径中包含API标头.为何"独立"这个词?这可能与常规工具链的不同之处在于RT需要配置并准备好供android使用sysroot和libc标题路径等等.请注释.
嗯,我正在为android编译,一个进程正在运行一个名为make-standalone-toolchain.sh的脚本,创建了一个独立的工具链.我正在通过这个脚本来了解这是做什么的.不太擅长shell脚本.但是做了一些事情.""生成包含工作sysroot的自定义Android工具链安装.结果可以更容易地用作独立的交叉编译器,例如运行configure和make脚本." - tool链接ndk-dir package-dir系统平台变量设置Compute source sysroot SRC_SYSROOT ="$ NDK_DIR /平台/ $ PLATFORM arch- $ ARCH"复制sysroot头文件和库...... libstdc ++头文件和库...预构建的二进制文件.然后进入一个临时文件夹,然后从Tmp目录复制到安装目录创建一个tar即一个包文件来添加tmpdir想要知道这里到底发生了什么或链接或建议在哪里look.but ofcourse不想阅读非常精细的手册.〜
在创建静态应用程序时,我经常启动一个新的Rails应用程序 这使得一些事情变得更容易,例如编译(Coffeescript,SCSS),最小化(JS,CSS)和浏览器限制(页面从localhost:3000提供,因此可以加载外部源等).
最后我想导出应用程序,以便我可以将它放在网上.然后我只需要HTML + CSS + JS.人们可以手动取出文件,但可能有一种更简单的方法.
那么:有没有一个工具可以存储Rails应用程序中编译的,最小化的HTML + CSS + JS文件?
我使用的是便携式MSYS2 + MinGW64.我的意思是获得gcc.
一些消息来源表示安装gcc,例如
$ pacman -Sy mingw-w64-i686-gcc
$ pacman -Sy mingw-w64-x86_64-gcc
Run Code Online (Sandbox Code Playgroud)
http://www.cplusplus.com/forum/windows/227005/
其他人(主要是在github)表示安装toolchain,例如
$ pacman -Sy mingw-w64-x86_64-toolchain
Run Code Online (Sandbox Code Playgroud)
https://github.com/tpaviot/oce/issues/631
https://github.com/Alexpux/MSYS2-packages/issues/293
https://github.com/orlp/dev-on-windows/wiki/Installing-GCC--&-MSYS2
如果有的话,选择其中一个的原因是什么?
我目前正在开发一个C项目,需要在不同的建筑环境中相当便携.该项目面向托管C环境中符合POSIX的系统.
实现良好程度的可移植性的一种方法是根据所选标准进行编码,但很难确定给定的翻译单元是否严格符合ISO C.例如,它可能违反某些翻译限制,或者它可能依赖于未定义的行为,而没有来自编译环境的任何诊断消息.我甚至不确定是否有可能检查大型项目的严格一致性.
考虑到这一点,是否有任何编译器,工具或方法在翻译单元的给定标准(例如,C89或C99)下测试严格的 ISO C一致性?
任何帮助表示赞赏.
我正在尝试为使用Boost库的代码创建一个CMake项目.我想为Android构建它,我正在使用此项目作为参考:https://code.google.com/p/android-cmake/.
我想使用之前为android构建的Boost静态库,而不是让它们成为要编译的项目的一部分.
这是我使用Boost的项目部分的CMakeLists.txt
#BOOST
set(BOOST_ROOT /home/neb/workspace/SDLActivityCMAKE/jni/boost)
set(Boost_INCLUDE_DIR /home/neb/workspace/SDLActivityCMAKE/jni/boost/include/boost-1_53)
set(BOOST_INCLUDEDIR /home/neb/workspace/SDLActivityCMAKE/jni/boost/include/boost-1_53)
set(Boost_LIBRARY_DIR /home/neb/workspace/SDLActivityCMAKE/jni/boost/lib)
set(BOOST_LIBRARYDIR /home/neb/workspace/SDLActivityCMAKE/jni/boost/lib)
set(Boost_USE_STATIC_LIBS ON)
set(USE_STATIC_BOOST ON)
set(Boost_USE_STATIC_RUNTIME ON)
set(BOOST_COMPILER gcc)
find_package(Boost COMPONENTS "thread-gcc-mt-1_53" "date_time-gcc-mt-1_53" REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIR})
#BOOSTEND
add_executable(main main.cpp)
target_link_libraries( main ${Boost_LIBRARIES} )
Run Code Online (Sandbox Code Playgroud)
当我运行常规cmake命令(cmake ..从android项目中的jni文件夹的子目录)没有问题,cmake找到库.当我使用cmake来使用上面提到的项目提供的android.toolchain.cmake时,我得到了这个(我正在使用-DBoost_DEBUG选项).
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:566 ] _boost_TEST_VERSIONS = 1.56.0;1.56;1.55.0;1.55;1.54.0;1.54;1.53.0;1.53;1.52.0;1.52;1.51.0;1.51;1.50.0;1.50;1.49.0;1.49;1.48.0;1.48;1.47.0;1.47;1.46.1;1.46.0;1.46;1.45.0;1.45;1.44.0;1.44;1.43.0;1.43;1.42.0;1.42;1.41.0;1.41;1.40.0;1.40;1.39.0;1.39;1.38.0;1.38;1.37.0;1.37;1.36.1;1.36.0;1.36;1.35.1;1.35.0;1.35;1.34.1;1.34.0;1.34;1.33.1;1.33.0;1.33
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:568 ] Boost_USE_MULTITHREADED = TRUE
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:570 ] Boost_USE_STATIC_LIBS = ON
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:572 ] Boost_USE_STATIC_RUNTIME = ON
-- [ /usr/share/cmake-2.8/Modules/FindBoost.cmake:574 ] Boost_ADDITIONAL_VERSIONS = …Run Code Online (Sandbox Code Playgroud) 我知道有很多编译器,例如gcc, clang,ninja但我不断听说“ Toolchains”等,但我不明白它们是什么,例如“gnu-toolchain”等
我一直在学校学习C++来创建小型命令行程序.
但是,我只使用IDE构建了我的项目,包括VS08和QtCreator.
我理解其背后建设项目的过程:编译源代码的对象,然后将它们链接到一个可执行文件是平台特定的(.exe,.app,等).我也知道大多数项目也用于make简化编译和链接多个源文件和头文件的过程.
问题是,虽然IDE完成了所有这些工作,让生活变得简单,我真的不知道真正发生了什么,并且觉得我需要习惯于以"老式的方式"构建项目:从命令行,明确使用工具链.
我知道它是什么Makefile,但不知道如何写它们.
我知道什么gcc,但不知道如何使用它.
我知道链接器的功能,但不知道如何使用它.
我正在寻找的,无论是解释,还是链接到解释C++项目工作流程的教程,从首次编写代码到运行生成的可执行文件.
我真的想知道构建C++的内容,方法和原因.
(如果它有任何区别,我运行Mac OS X,使用gcc 4.0.1并制作3.81)
谢谢!
我正在试图找出我正在设置的工具链的gcc选项,用于开发板:Sabre-lite,它基于飞思卡尔的iMX6q四核处理器.
现在我知道iMX6基本上是一个cortex-a9处理器,它有协处理器vfpv3和霓虹灯,还有矢量图形,2D甚至3D引擎.
但是,发行说明和使用指南文档对于如何启用可在gcc中启用的任何选项并不太清楚.
事实上,我可以"玩"的选项如下.
-march= armv7-a - ok this one is pretty obvious.
-mfpu= vfpv3/neon - i can use only the vfpv3 co-processor, or both (respectively, depends on option)
-mfloat-abi=softfp/soft/hard - I guess I can choose hard here, as there is hardware for fp operations
-mcpu=cortex-a9 - is it option even necessary? it is not clear if it just an alias for -march or something else.
Run Code Online (Sandbox Code Playgroud)
我应该启用其他选项吗?为什么工具链具有构建linux内核/ uboot/packages的默认选项:
-march= armv7-a -mfpu= vfpv3 -mfloat-abi=softfp
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
我一直在研究构建跨工具链,并对 gcc 的编译和工作有一个一般性问题。
问题是关于官方 gcc 文档的摘录:
为了构建 GCC,将为其构建目标库的所有目标变体(而不仅仅是主机 C++ 编译器的变体)都必须存在 C 标准库和头文件。
为什么需要目标的标准库来构建(交叉)编译器本身?难道在主机上运行的(交叉)编译器不应该只需要构建主机的标准库,然后就能够编译目标的标准库吗?
我还在 crosstool-NG 的工具链构建方式上发现了这一点:
最终编译器需要 C 库,才能知道如何使用它,但是:构建 C 库需要编译器
这与上面所述一致,但我不明白为什么需要针对预构建的目标 C 库构建最终编译器,只是为了知道稍后如何使用它。主机编译器需要了解有关目标 C 库的哪些信息?在编译时将目标程序链接到目标的标准库不是链接器的工作吗?