rustc foo.rs如果我没有安装C ++工具链,则使用编译Rust文件将失败。但是在编译Go程序时,不需要这样的工具链。这是为什么?
我知道build.rs可以在程序编译开始之前执行任务,所以我可以准备任何我想要的东西。
如果编译完成后要执行一项任务(例如某种清理)怎么办?有什么办法可以做到这样的事情吗?
举一个简单的例子:在编译之前,我想出于某种原因将文件从 重命名foo.txt为abc.txt。然后在编译终止后我想将其重命名回foo.txt.
互联网上的几个链接(例如:http://drdobbs.com/article/print ?articleId = 232300575& siteSectionName = http://www.hydrogenaudio.org/forums//lofiversion/index.php/t74268.html)指出那里是Eclipse Indigo的VS工具链插件,它将Visual Studio(Express)集成到CDT中.有人可以指出从哪里下载它?
感谢:D.
是否有某种替代工具链或Android语言,可以生成独立的APK文件?
理想情况下,应该不依赖于庞大的,不断变化,不断升级官方Android SDK.
尽管微软一直在发布新的Visual Studios,但我正在寻找一个与PowerBASIC和Mingw如何针对普通Windows完全正常的粗略对等.
如果此语言或工具链本身是Android程序,则奖励积分......
我想创建一个能够在 Android 中列出动态库 .so 文件的所有符号的应用程序。我想问一下有没有预编译的nm for Android 或者至少有nm 的源代码,这样我就可以自己编译了。
我正在使用CMake构建Android项目."android.toolchain.cmake"工具链用于构建项目.
所有环境变量都按照android cmake的用法部分所述进行设置.以下选项变量被设置为环境变量ANDTOOLCHAIN ANDROID_STANDALONE_TOOLCHAIN ANDROID_ABI ANDROID_NATIVE_API ANDROID_STL CC和CXX分别指向androideabi-gcc和androideabi-g ++
CMAKE成功生成了Make文件,但当我"生成"项目时,它正在抛出"错误运行链接命令:没有这样的文件或目录".
link.txt的详细信息如下
*cd/Extra/svnroot/2014_Project/build/project123 &&/usr/bin/cmake -E cmake_link_script CMakeFiles/project123dir/link.txt --verbose = 1
CMAKE_C_COMPILER -fPIC -Wno-psabi --sysroot =/path_to_sysroot_dir/sysroot -fpic -funwind-tables -finline-limit = 64 -fsigned-char -no-canonical-prefixes -march = armv7-a -mfloat-abi = softfp - mfpu = vfpv3-d16 -fdata-sections -ffunction-sections -Wa, - noexecstack -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-deprecated -Wno-unused -Wno-unused-variable -Wsign- compare -Wsequence-point -Wunused-but-set-variable -Wall -Wextra -Wno-unused-parameter -fno-strict-aliasing -pthread -Wl, - fix-cortex-a8 -Wl, - no-undefined - Wl,-allow-shlib-undefined -Wl, - gc-sections -fuse-ld = gold -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname ,libproject123.so …
我正在使用最新的maven 3.3.9,它强制执行java 8,并尝试使用java 7 maven工具链在java 7中编译项目.
按照: maven指南我已经放入maven工具链插件尝试告诉它使用java 7来编译应用程序.我的项目设置如下:
top_module - >(在这个pom.xml中放入了maven工具链插件)
--- submodule1
--- submodule2
这是我的父pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent</groupId>
<artifactId>build-base</artifactId>
<version>1.0.17</version>
</parent>
<groupId>top_module</groupId>
<artifactId>top_module</artifactId>
<version>1</version>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<modules>
<module>submodule1</module>
<module>submodule2</module>
</modules>
<properties>
...
</properties>
<dependencyManagement>
<dependencies>
<dependency>
...
</dependency>
<dependency>
...
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
...
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<!-- Ensure we compile as the correct jdk version -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId> …Run Code Online (Sandbox Code Playgroud) 我一直在使用buildroot来使用uclibc构建工具链。现在,buildroot下载所有包,解压并构建它们。
我想更改工具链的uclibc源代码,然后使用新源代码重新编译工具链,但我只是不明白如何以漂亮的方式完成它。
完成构建后,所有提取的源都可以在“ <buildroot-src>/output/build ”中找到。但更改它们不会给我带来任何好处,因为 buildroot 仅在构建期间使用此目录作为中间目录。
所以我的想法是,也许可以更改uclibc包中的 .mk 文件,并使其使用我修改过的源代码,而不是下载并提取它(尚未确定是否可以在那里完成),但这似乎是一个有点难看的解决方案。
所以我的问题是:有没有更好的方法告诉 buildroot 使用现有源构建包?
它可以通过哪些方式作为C / assembly / object / executable编译器的示例?
我希望获得的信息比维基百科提供的信息少。另外,如果您可以链接一些可以在其中找到更多信息的资源,那将是很棒的。
我正在使用 buildroot 的工具链来交叉编译 ARM 应用程序。然而,某些应用程序需要的库不是为该工具链编译的。我的主机工具链上有这些库,例如 -ljack、lfftw 等。
我需要知道,如果我获得所需软件包的 tarball,那么如何配置它们,以便由 arm-gcc 编译这些库,并将标头/库复制到 buildroot 的 /usr 和 /include ?
这样我应该能够通过 buildroot 的工具链访问这些库。
谢谢,
我正在尝试构建一个可移植的 gcc,以允许其他人使用不同的系统进行编译。
我用crosstool-ng交叉编译gcc-8.2的x86_64,我建了一个静态的工具链。
我创建了以下工具链文件:
#set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(QAMF_ROOT "/opt/hyperserver-dev/x86_64-qamf")
set(COMPILER_ROOT "${QAMF_ROOT}")
set(COMPILER_PREFIX "x86_64-qamf-linux-gnu-")
set(C_COMPILER "gcc")
set(CXX_COMPILER "g++")
# specify the cross compile
set(CMAKE_C_COMPILER ${COMPILER_ROOT}/bin/${COMPILER_PREFIX}${C_COMPILER} )
set(CMAKE_CXX_COMPILER ${COMPILER_ROOT}/bin/${COMPILER_PREFIX}${CXX_COMPILER} )
# HyperServer sysroot path
set(HYPERSERVER_SYSROOT "${COMPILER_ROOT}/x86_64-qamf-linux-gnu/sysroot")
# where is the target environment
set(CMAKE_FIND_ROOT_PATH ${HYPERSERVER_SYSROOT} )
# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Run Code Online (Sandbox Code Playgroud)
在我的主机上它工作得很好,我可以毫无问题地编译,但是当我在另一台机器上移动工具链文件时,我遇到了问题。如果我尝试在 cmake 中包含 Threads,则会出现以下错误: …
我正在使用 Buildroot 2020.02.1 为安装了 AMD GX-222GC SOC 的 PC 构建自定义内核。
默认的外部工具链是来自 CodeBench 的 amd-2016.11-19。使用该工具链构建的内核正确启动。 相反,如果我使用由 buildroot 自动构建的工具链构建相同的内核、相同的配置,则内核不会启动!甚至没有内核恐慌,机器只是重置。
很明显,问题与工具链有关。
这些是 gcc -v 的结果
代码台:
$ output/host/usr/bin/x86_64-amd-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/media/AAA/tmp/buildroot_toolchain/output/host/opt/ext-toolchain/bin/x86_64-amd-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/media/AAA/tmp/buildroot_toolchain/output/host/opt/ext-toolchain/bin/../libexec/gcc/x86_64-amd-linux-gnu/6.2.0/lto-wrapper
Target: x86_64-amd-linux-gnu
Configured with: /scratch/jmyers/amd-lite/src/gcc-6-2016.11/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=x86_64-amd-linux-gnu --enable-threads --disable-libmudflap --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=btver2 --with-cpu=btver2 --with-gnu-as --with-gnu-ld --with-specs='-D__CS_SOURCERYGXX_MAJ__=2016 -D__CS_SOURCERYGXX_MIN__=11 -D__CS_SOURCERYGXX_REV__=19' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-glibc-version=2.24 --with-pkgversion='Sourcery CodeBench Lite 2016.11-19' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/x86_64-amd-linux-gnu/libc --with-build-sysroot=/scratch/jmyers/amd-lite/install/opt/codesourcery/x86_64-amd-linux-gnu/libc --with-gmp=/scratch/jmyers/amd-lite/obj/pkg-2016.11-19-x86_64-amd-linux-gnu/amd-2016.11-19-x86_64-amd-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/jmyers/amd-lite/obj/pkg-2016.11-19-x86_64-amd-linux-gnu/amd-2016.11-19-x86_64-amd-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/jmyers/amd-lite/obj/pkg-2016.11-19-x86_64-amd-linux-gnu/amd-2016.11-19-x86_64-amd-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/jmyers/amd-lite/obj/pkg-2016.11-19-x86_64-amd-linux-gnu/amd-2016.11-19-x86_64-amd-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr --enable-libgomp --enable-libitm --enable-libatomic --disable-libssp --disable-libcc1 --enable-poison-system-directories --with-python-dir=x86_64-amd-linux-gnu/share/gdb/python --with-build-time-tools=/scratch/jmyers/amd-lite/install/opt/codesourcery/x86_64-amd-linux-gnu/bin --with-build-time-tools=/scratch/jmyers/amd-lite/install/opt/codesourcery/x86_64-amd-linux-gnu/bin SED=sed …Run Code Online (Sandbox Code Playgroud) 在尝试使用 SDCC 编译器创建交叉编译 CMake 工具链模板时,我遇到了一个非常奇怪的问题。
如此链接所述,如果toolchain.cmake文件定义了 a ,CMake 将在目录下CMAKE_SYSTEM_NAME查找具有 的文件。这个文件应该定义特定于平台的选项。就我而言,我用它来查找${CMAKE_SYSTEM_NAME}.cmakeModule/Platformsdcc编译器并设置一些编译器标志。
这对我来说效果很好。使用cmake -DCMAKE_MODULE_PATH="${PATH_TO_MY_MODULES}" -DCMAKE_TOOLCHAIN_FILE="${PATH_TO_MY_TOOLCHAIN}" -DSDCC_SYSROOT="SOME_VALUE",CMake 找到所有正确的工具链和平台文件。
看起来工具链和平台文件在配置过程中被执行了几次(不确定这是否是正确的术语)。在前几次中,我在 CMake 命令中传递的变量具有预期的SDCC_SYSROOT值。SOME_VALUE然而,相同的变量SDCC_SYSROOT似乎在上次执行这些工具链/平台文件时丢失了值。所以他们是空的。这会导致我的脚本生成致命错误。
toolchain.cmake有以下内容:
set(CMAKE_SYSTEM_NAME SDCC_PIC_16F877A)
# Finding resource settings
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
# Set default MCU family and model
if (NOT MICROCHIP_FAMILY)
set(MICROCHIP_FAMILY "pic16")
endif()
if (MICROCHIP_MODEL STREQUAL "pic16")
set(MICROCHIP_MODEL "16f877a")
endif()
# Need a better way to detect …Run Code Online (Sandbox Code Playgroud)