我使用内置的"Clang"工具集在NetBeans中创建了一个简单的C++应用程序项目.Clang设置似乎没问题(所有指向LLVM):
C编译器:/ usr/bin/clang
C++编译器:/ usr/bin/clang ++ ...
调试器命令:/ usr/bin/lldb
我的项目设置将"工具集"设置为:"CLang(默认)".
当我尝试调试项目时,GDB调试器被解雇(当然由于最新Mac系统上已知的gdb问题而失败,这是我切换到LLVM的原因之一)我得到:
启动调试器...
启动gdb
...
GDB意外停止,返回0
我试图强制Debug命令在Debug项目设置中使用lldb,但无济于事.使用"Attach debugger ..."时也很奇怪,我只能看到我安装的所有GDB调试器但没有lldb(见下面的截图).
我错过了什么设置?
截图:

开发人员的MSDN页面包含以下代码段:
// Move constructor.
MemoryBlock(MemoryBlock&& other) : _data(nullptr), _length(0)
{
std::cout << "In MemoryBlock(MemoryBlock&&). length = "
<< other._length << ". Moving resource." << std::endl;
// Copy the data pointer and its length from source object.
_data = other._data; // Assginment 1
_length = other._length; // Assignment 2
// Release the data pointer from the source object so that
// the destructor does not free the memory multiple times.
other._data = nullptr;
other._length = 0;
}
Run Code Online (Sandbox Code Playgroud)
有什么用的_data(nullptr) …
LLVM C++编译器完全支持C++ 11标准.有没有办法将C++ 11设置为默认标准,而不是-std=c++11每次都添加编译器标志?我尝试将CCXFLAGS环境变量设置为-std=c++11,但没有运气.
我正在尝试numba在OS X Mountain Lion上安装.我曾尝试过这种pip install方式,但没有工作,所以我从GIT存储库下载了zip文件.在尝试安装numba时,我意识到我需要先做LLVM.
我下载并解压缩llvm到该Download文件夹中.README指令是:"如果您的LLVM安装在非标准位置,请首先将LLVM_CONFIG环境变量指向相应llvm-config可执行文件的路径."; 与运行python setup.py install命令时获得的RunTimeError兼容的消息.
我的问题是我不明白该怎么做才能使LLVM_CONFIG环境变量指向相应的llvm-config可执行文件.
有帮助吗?谢谢
我正在尝试C++使用 LLVM/Clang 3.7.0 构建一个简单的(“hello world”)程序,该程序是根据工具链的源代码构建的libc++,使用命令行:
clang++ -std=c++14 -stdlib=libc++ -fno-exceptions hello.cpp\nRun Code Online (Sandbox Code Playgroud)\n\n但是,我收到以下错误:
\n\n/usr/bin/ld: warning: libc++abi.so.1, needed by /bulk/workbench/llvm/3.7.0\n/toolchain4/bin/../lib/libc++.so, not found (try using -rpath or -rpath-link)\n/bulk/workbench/llvm/3.7.0/toolchain4/bin/../lib/libc++.so: undefined reference to `__cxa_rethrow_primary_exception\'\n/bulk/workbench/llvm/3.7.0/toolchain4/bin/../lib/libc++.so: undefined reference to `__cxa_decrement_exception_refcount\'\n/bulk/workbench/llvm/3.7.0/toolchain4/bin/../lib/libc++.so: undefined reference to `std::out_of_range::~out_of_range()\'\n[...]\nRun Code Online (Sandbox Code Playgroud)\n\n未LD_LIBRARY_PATH设置,工具链的安装目录已添加到我的工作中PATH中:
export PATH=$PATH:/bulk/workbench/llvm/3.7.0/toolchain4/bin/\nRun Code Online (Sandbox Code Playgroud)\n\n我上线了Ubuntu GNU/Linux 14.04,并且尚未从任何存储库安装任何 LLVM 或 Clang 相关的软件包。
根据libc++ 文档:
\n\n\n在 Linux 上,libc++ 通常只能与 \xe2\x80\x98-stdlib=libc++\xe2\x80\x99 一起使用。然而,某些 libc++ 安装需要用户自己手动链接 libc++abi。如果在使用 …
我正在尝试设置一个工具链文件,以便与 CMake 3.12.0 版本进行交叉编译。
我的目标文件.obj与 Windows 和.oUNIX 中的扩展名不同。
因此,我将我的设置CMAKE_LANG_OUTPUT_EXTENSION为.src.
不幸的是,这个变量被CMakeCInformation.cmake这些行中的文件覆盖:
# some compilers use different extensions (e.g. sdcc uses .rel)
# so set the extension here first so it can be overridden by the compiler specific file
if(UNIX)
set(CMAKE_C_OUTPUT_EXTENSION .o)
else()
set(CMAKE_C_OUTPUT_EXTENSION .obj)
endif()
Run Code Online (Sandbox Code Playgroud)
如果我注释这些行,我的配置将起作用并且将使用正确的对象扩展。
我认为我的工具链文件已配置为 CMake 不会执行其内部编译器检查。
这是我的工具链文件条目行的外观:
SET(CMAKE_SYSTEM_NAME Generic)
INCLUDE(CMakeForceCompiler)
SET(CMAKE_C_COMPILER_FORCED TRUE)
SET(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
#other compiler configuration lines here
SET(CMAKE_C_OUTPUT_EXTENSION .src)
SET(CMAKE_ASM_OUTPUT_EXTENSION .o)
SET(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
SET(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
Run Code Online (Sandbox Code Playgroud)
我知道 …
我试图理解从 C++ 程序生成的 LLVM IR
int add(int *x);
int func()
{
int T;
T=25;
return add(&T);
}
Run Code Online (Sandbox Code Playgroud)
生成的IR为:
define i32 @_Z4funcv() local_unnamed_addr #0 {
entry:
%T = alloca i32, align 4
%0 = bitcast i32* %T to i8*
call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) #3
store i32 25, i32* %T, align 4, !tbaa !2
%call = call i32 @_Z3addPi(i32* nonnull %T)
call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) #3
ret i32 %call
}
Run Code Online (Sandbox Code Playgroud)
我不明白这一行%0 = bitcast i32* %T …
我在最近的项目中使用 CMake,我想确认设置了正确的路径
set(_protobuf_include_path -I . -I ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)
我曾经在终端中message检查_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR但不打印任何内容的值
message( STATUS ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR} ) # no output for this
Run Code Online (Sandbox Code Playgroud)
我的意图是构建 Grpc1.14.1,它与 protobuf 有依赖关系,所以我下载了 protobuf 3.6.01,并且 grpc 和 protobuf 都保存在同一目录 ( home/user/src) 下。
构建时出现此错误
google/protobuf/stubs/common.h: No such file or directory
#include <google/protobuf/stubs/common.h>
Run Code Online (Sandbox Code Playgroud)
所以我protobuff.cmake在目录中打开gRPC/cmake并更改了protobuf根路径
if(NOT PROTOBUF_ROOT_DIR)
#set(PROTOBUF_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf)
set(PROTOBUF_ROOT_DIR ../../ThirdParty/protobuf)
[...]
Run Code Online (Sandbox Code Playgroud)
这样做之后,我仍然遇到同样的问题。
Kotlin / Native的官方文档指出Kotlin / Native
..是Kotlin编译器基于LLVM的后端。
据我所理解:
因此,Kotlin / Native是否将Java字节码转换为LLVM IR?如果是这样,声明Kotlin / Native是LLVM后端是否正确?Kotlin代码是否可以编译到LLVM IR中?如果不是,那么每个编译步骤的输入和输出是什么?(例如:Kotlin-(kotlinc)-> Java字节码-(LLVM后端->本机二进制)
这篇博客文章指出Kotlin前端编译器(我认为它是指kotlinc)产生了我从未读过的Kotlin IR。
Kotlin编译器只有一个前端,但有多个后端,具体取决于您用来构建代码的插件。Kotlin / Native插件将Kotlin中间表示(IR)转换为本机代码(即,机器可执行的代码)。
这个报价正确吗?
它告诉您Java字节码,本机代码和JavaScript的编译过程相同。您编译Kotlin代码,然后有3个后端编译器提供预期的输出格式(Java字节码,JavaScript,二进制代码)。
最终平台特定的二进制文件是否包含本地Kotlin标准库,或者它是动态链接的?
我正在尝试配置使用 CMake 的 bcl2fastq 程序。我找到了触发此错误消息的行
file:bcl2fastq/src/cmake/cxxConfigure.cmake
############## content ####################
..... # ignoring many lines
bcl2fastq_find_header_or_die(HAVE_SYS_STAT_H sys/stat.h)
......# more lines following
Run Code Online (Sandbox Code Playgroud)
错误信息:
-- time.h found as /usr/include/time.h
-- unistd.h found as /usr/include/unistd.h
CMake Error at cmake/macros.cmake:80 (message):
Required header sys/stat.h not found.
Call Stack (most recent call first):
cmake/cxxConfigure.cmake:41 (bcl2fastq_find_header_or_die)
cxx/CMakeLists.txt:34 (include)
Run Code Online (Sandbox Code Playgroud)
在我的系统上,sys/stat.h位于
/usr/include/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)
在过去,我添加的符号链接/usr/include的sys/stat.h,其修补的问题。有人可以通过修改 CMake 文件来建议更好的方法吗?
深入挖掘,我macros.cmake在cxxConfigure.cmake包含宏定义的同一目录中找到了该文件:
#
# Macro to find libraries, with support for static-only search
#
macro(bcl2fastq_find_header_or_die …Run Code Online (Sandbox Code Playgroud)