小编Rya*_*lue的帖子

如何在 Windows 上将 lld 与 CMake 一起使用?

我正在尝试使用 CMake 和 clang + lld ( http://releases.llvm.org/ ) + mingw ( https://sourceforge )编译 SDL2 ( https://www.libsdl.org/download-2.0.php ) .net/projects/mingw-w64/ ) 头文件在 Windows 10 上。尽管我做了很多努力,但我似乎无法让 CMake 通过 mingw ld 链接器使用 lld 链接器。

我目前使用批处理文件构建 sdl2:

@ECHO OFF

IF NOT EXIST build MKDIR build
PUSHD build

cmake.exe -DCMAKE_BUILD_TYPE=Debug -G "MinGW Makefiles"^
  -DCMAKE_C_FLAGS="-target x86_64-windows-gnu"^
  -DCMAKE_C_COMPILER_ID="Clang" -DCMAKE_C_COMPILER="clang.exe"^
  -DCMAKE_CXX_FLAGS="-target x86_64-windows-gnu"^
  -DCMAKE_CXX_COMPILER_ID="Clang++" -DCMAKE_CXX_COMPILER="clang++.exe"^
  -DDIRECTX=OFF -DSDL_TEST=OFF -DSDL_SHARED=OFF -DSDL_STATIC=ON ..

cmake.exe --build . -- -j %NUMBER_OF_PROCESSORS%

POPD

Run Code Online (Sandbox Code Playgroud)

我试过无济于事:

任何帮助将不胜感激。

c++ windows cmake llvm lld

10
推荐指数
1
解决办法
1676
查看次数

Linux Evdev 轮询延迟

我的笔记本电脑连接了 2 个键盘(内置键盘和 USB 键盘)。我正在获取这些连接的键盘并libudev使用epoll它们通过接口轮询输入evdev

// Compile with $(gcc udev.c -ludev)

#include <stdbool.h>
#include <stdio.h>
#include <string.h>

#include <sys/epoll.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
#include <time.h>
#include <libudev.h>

#define BILLION 1000000000L

long timespec_diff(struct timespec *start, struct timespec *end)
{
  return (BILLION * (end->tv_sec - start->tv_sec)) +
         (end->tv_nsec - start->tv_nsec);
}

bool want_to_run = true;

int
main(int argc, char *argv[])
{
  int epoll_fd = epoll_create1(0);

  struct udev *udev_obj = udev_new(); …
Run Code Online (Sandbox Code Playgroud)

c linux epoll udev evdev

7
推荐指数
1
解决办法
445
查看次数

如何使自定义部分可执行(.text 除外)

基本的 Hello World 就像之前在 x86_64 Linux 上多次看到的那样:

global my_start_symbol 

section .my_section

my_start_symbol:
        mov rax, 1
        mov rdi, 1 
        mov rsi, msg
        mov rdx, msg_len
        syscall 

        mov rax, 60
        xor rdi, rdi
        syscall

section .rodata:
msg: db "Hello, world!", 10 
msg_len: equ $ - msg
Run Code Online (Sandbox Code Playgroud)

我当前的ld链接器脚本:

__linux_mmap_min_addr = 0x10000;

ENTRY(my_start_symbol)

MEMORY
{
  rom (rx) : ORIGIN = 0, LENGTH = 512K
}

SECTIONS 
{
  . = __linux_mmap_min_addr;
  .my_section : 
  { 
    *(.my_section*) 
  } > rom
  .rodata : 
  {
    *(.rodata*) 
  } …
Run Code Online (Sandbox Code Playgroud)

linux x86-64 nasm ld linker-scripts

5
推荐指数
1
解决办法
842
查看次数

标签 统计

linux ×2

c ×1

c++ ×1

cmake ×1

epoll ×1

evdev ×1

ld ×1

linker-scripts ×1

lld ×1

llvm ×1

nasm ×1

udev ×1

windows ×1

x86-64 ×1