从Linux移植到OS/X是一项挑战。我在另一个函数体中嵌入了一个内联函数。在Linux上,gcc愉快地编译了代码,但是在OS/X上,clang报告了错误。
这是代码片段,
$ cat inline.c
void func() {
inline int max(int a, int b) { return (a>b) ? a : b; }
int c = max(11,22);
}
在Linux上,一切都很好
Linux $ gcc -c inline.c
Linux $$ gcc --version
gcc (Ubuntu 5.2.1-22ubuntu2
我正在尝试从我的64位英特尔机器上的源代码编译linux内核0.0.1。只是为了填充boot和main,我必须修改所有的makefile以获得32位编译。
因此,这是make的输出:
In file included from traps.c:7:0:
../include/string.h:128:22: warning: conflicting types for built-in function ‘strchr’
extern inline char * strchr(const char * s,char c)
^
../include/
当编译包含<experimental/any>的代码时,我会得到一个错误。
main.cpp中的代码
#include <experimental/any>
int main() { }
编译此(clang版本为3.9):
clang++ main.cpp -o main -std=c++1z
编译后出错:
In file included from main.cpp:2:
/usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/experimental/any:364:34: error:
我用英特尔函数_rdrand16_step()编写了一段代码,在Windows(VisualStudio2017)上工作得很好,但是在Linux(g++)上我不能让它工作。我在代码中2次调用该函数:
#include <immintrin.h>
...
unsigned short val = 0;
if (_rdrand16_step(&val))
...
_rdrand16_step(&val);
...
g++输出如下:
/usr/lib/gcc/x86_64-linux-gnu/8/include/immintrin.h: In member functio
当我尝试通过cpan> install Inline使用cpan安装内联软件包时,最后得到以下错误:
make: *** [test_dynamic] Error 255
SISYPHUS/Inline-0.53.tar.gz
/opt/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports SISYPHUS/Inline-0.53.tar.gz
Running make install
make test had r
因此,我从的Linux源代码中阅读(在谷歌上找到的)。我不确定这是否合法),我只是不能把我的心思放在这件事上:
这个原子是怎么回事?
static inline int atomic_dec_if_positive(atomic_t *v)
{
int c, old, dec;
c = atomic_read(v);
for (;;) {
dec = c - 1;
if (unlikely(dec < 0))
break;
old = atomic_cmpxchg((v), c, dec);
if (likely(old == c)
从两周以来,我试图为我的htc设备构建内核。获得正确的信息来源并不是问题,但自从gcc被从工具链中移除以来,这真是一场噩梦。按照建议使用clang总是以大量错误消息结尾。
到现在为止我做了什么?
妥善安装最新的android (21.3.6528147)
成功地通过命令行测试交叉编译(只是一个简单的程序)。
为内核构建设置ENV变量:(仅在尚未设置的情况下才导出命令)
$ cd <kernel-source-root>
($ make mrproper) // just after failed attempt to build
$ export ARCH=ar
我尝试用clang 8.0.0为Linux内核2.6.37代码生成AST文件。我在内核根目录中运行以下命令 clang -emit-ast init/main.c -o astfile -std=c11 -Iinclude -Iarch/x86/include 并获取错误 In file included from /mnt/lfs/sources/linux-2.6.37/init/main.c:12:
/mnt/lfs/sources/linux-2.6.37/include/linux/types.h:13:2: warning: "Attempt to use kernel
谁能给我解释一下从linux内核获取的代码片段吗?
/*
* how to get the thread information struct from C
*/
static inline struct thread_info *current_thread_info(void) __attribute_const__;
static inline struct thread_info *current_thread_info(void)
{
register unsigned long sp asm ("sp");
return
我正在运行一个阿尔卑斯linux,并试图安装radare2。我下载了git,然后运行了install.sh脚本。在遇到错误之前,它似乎运行良好:
In file included from p/native/linux/linux_debug.c:6:
/home/nomad/GitRepos/radare2/libr/include/r_debug.h:609:115: note: expected 'r_ptrace_data_t' {aka 'int'} but argument is of type 'void *'
static in