标签: libc

linux如何同时32位和64位?或者是glibc处理的东西?

Linux如何同时32位和64位?或者是glibc处理的东西?

我运行CentOS 5.3,它是一个"64位"版本; 虽然我为64位和32位构建了东西.据我所知,Windows应该有一个32位模拟器.Linux做同样的事情吗?它是在用户空间还是内核空间?

如果libc处理它,它有点像模拟器说,我将链接32位应用程序,但说64位到内核?

linux 64-bit x86 libc 32bit-64bit

6
推荐指数
1
解决办法
2872
查看次数

Android libc.so崩溃?

我正在使用AndEngine与PhysicsBox2DExtension制作游戏.我的游戏一直在崩溃,我在未经过滤的LogCat中得到了这个:

07-06 13:25:27.266: I/DEBUG(19582): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-06 13:25:27.266: I/DEBUG(19582): Build fingerprint: 'TMOUS/SGH-T959V/SGH-T959V/SGH-T959V:2.2.1/FROYO/VUVKD1:user/release-keys'
07-06 13:25:27.274: I/DEBUG(19582): pid: 22238, tid: 22263  >>> com.prattia.webs.testgfx5 <<<
07-06 13:25:27.274: I/DEBUG(19582): signal 11 (SIGSEGV), fault addr deadbaad
07-06 13:25:27.286: I/DEBUG(19582):  r0 00000000  r1 afd14921  r2 00000027  r3 00000070
07-06 13:25:27.286: I/DEBUG(19582):  r4 afd42328  r5 00000000  r6 00000000  r7 43095ba0
07-06 13:25:27.297: I/DEBUG(19582):  r8 447d75ac  r9 43095b5c  10 80aa23f4  fp 43095b58
07-06 13:25:27.297: …
Run Code Online (Sandbox Code Playgroud)

crash android libc box2d andengine

6
推荐指数
2
解决办法
1万
查看次数

libc.h:编译nanomsg管道样本时没有这样的文件或目录

尝试运行一个简单的nanomsg文件,从第一个开始:https://github.com/dysinger/nanomsg-examples

安装nanomsg到/usr/local/lib/nanomsg-0.2-alpha.然sudo ./configure,sudo make check,sudo make installsudo ldconfig作为指导说.所有测试都通过.

当我运行它时,说找不到libc.h:

$ gcc pipeline.c /usr/local/lib/libnanomsg.a -o pipeline
pipeline.c:2:18: fatal error: libc.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

什么是libc.h?我从大学开始就没有做任何C编程.它是nanomsg或C库的一部分吗?

$ which gcc
/usr/bin/gcc
Ubuntu 12.04.4 LTS
Run Code Online (Sandbox Code Playgroud)

c libc nanomsg

6
推荐指数
1
解决办法
4947
查看次数

getc()作为宏和C标准库函数定义,连贯吗?

[7.1.4库函数的使用]中,我读到:

标题中声明的任何函数可以另外实现为标题中定义的函数式宏...

任何实现为宏的库函数的调用都应扩展为仅对其每个参数进行一次计算的代码...

那么getc,[7.21.7.5 getc函数]:

getc函数等效于fgetc,除非它是作为宏实现的,它可能会多次评估流,因此参数永远不应该是带有副作用的表达式.

定义是getc:

  • 与库函数定义相矛盾?
  • 反过来?
  • 这是标准中的不连贯吗?
  • 或者这是否意味着如果getc单独实现(似乎不符合但是?)作为宏,它可以两次评估其参数?

c macros function libc language-lawyer

6
推荐指数
1
解决办法
415
查看次数

对齐和表现

strcmp用于比较char *memcmp其他一切的例程,它们在内存块上运行得更快(在x86_64上),它以某种方式对齐(如何?)?libc是否SSE用于此例程?

c c++ linux sse libc

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

如何以惯用的 Rust 方式处理来自 libc 函数的错误?

libc 的错误处理通常是< 0在发生错误时返回一些内容。我发现自己一遍又一遍地这样做:

let pid = fork()
if pid < 0 {
    // Please disregard the fact that `Err(pid)`
    // should be a `&str` or an enum
    return Err(pid);
}
Run Code Online (Sandbox Code Playgroud)

我觉得这需要 3 行错误处理很难看,特别是考虑到这些测试在这种代码中非常频繁。

有没有办法返回一个Err以防万一fork()返回< 0

我发现两件事很接近:

  1. assert_eq!. 这需要另一行,panic因此调用者无法处理错误。
  2. 使用这些特征:

    pub trait LibcResult<T> {
        fn to_option(&self) -> Option<T>;
    }
    
    impl LibcResult<i64> for i32 {
        fn to_option(&self) -> Option<i64> {
            if *self < 0 { None } else { Some(*self) } …
    Run Code Online (Sandbox Code Playgroud)

error-handling libc rust

5
推荐指数
2
解决办法
1372
查看次数

u-boot /lib/ld-linux-armhf.so.3: 没有那个文件或目录

我的机器 Ubuntu 16.04.3 LTS x86_64。我确实编译了 u-boot-2017.11,但出现错误。

u-boot-2017.11$ export ARCH=arm

u-boot-2017.11$ export CROSS_COMPILE=/opt/toolchains/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

u-boot-2017.11$ make geekbox_defconfig
  HOSTCC  scripts/basic/fixdep
/lib/ld-linux-armhf.so.3: No such file or directory
scripts/Makefile.host:99: recipe for target 'scripts/basic/fixdep' failed
make[1]: *** [scripts/basic/fixdep] Error 255
Makefile:399: recipe for target 'scripts_basic' failed
make: *** [scripts_basic] Error 2
Run Code Online (Sandbox Code Playgroud)

我尝试查找并安装丢失的软件包,但已全部安装完毕。

u-boot-2017.11$ dpkg -S ld-linux-armhf.so
libc6-armhf-cross: /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3

u-boot-2017.11$ sudo apt-get install libc6-armhf-cross
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libc6-armhf-cross is already the newest version (2.23-0ubuntu3cross1).
0 upgraded, 0 newly installed, …
Run Code Online (Sandbox Code Playgroud)

ubuntu libc u-boot ubuntu-16.04

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

重回 libc 攻击

我正在尝试使用格式字符串攻击向量对以下代码实施返回到 libc 攻击。

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

int main(int argc, char *argv[])
{
   char a[10];
   scanf("%s",&a);  
   printf(a);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想通了使用系统()的地址p system的命令gdb。通过使用 对堆栈帧的检查x/500s $esp,我计算出包含\bin\sh.

system: 0xf7e2cda0 
exit: 0xf7e209d0
\bin\bash: 0xffffd207
Run Code Online (Sandbox Code Playgroud)

有了这些东西,我构造了以下格式字符串:

python -c 'print "A"*14 + "\xbc\xcd\xff\xff" + "\xa0\xcd\xe2\xf7" + "\xd0\x09\xe2\xf7" + "\x07\xd2\xff\xff"' > inp
Run Code Online (Sandbox Code Playgroud)

其中0xffffcdbc - 0x4是包含系统地址0xf7e2cda0值的本地地址。

我使用编译程序gcc -m32 -fno-stack-protector -o sh sh.c并使用gdb sh. 执行后,在输入时r<inp,我得到以下输出

gdb_output

如上所示,显示了一些错误命令,我只有在r再次运行命令后才能进入 shell …

c linux libc buffer-overflow

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

ubuntu 中的 libc 还是 glibc?

我对这些库有点困惑。我现在在 Ubuntu 上工作,我使用 g++ 5,我看到我的应用程序链接在 libc.so 中。它是 Ubuntu 对 C 标准库的实现吗?它与 glibc 不同吗?

$ ldd application.exe
...
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
...
Run Code Online (Sandbox Code Playgroud)

ubuntu gcc glibc libc

5
推荐指数
2
解决办法
9043
查看次数

你如何写信给 Pty 大师 Rust

我创建了一个简单的 pty 设置,但是我不确定如何在创建后实际写入主端或从端。我也不确定我的设置是否正确,因为经过检查,pty 的子进程的 Stdin、Stdout 和 Stderr 都是 None 而不是设置为从文件描述符。任何人都可以澄清这是否正确,如果不正确,您对如何解决它有任何建议吗?

use libc::{self};
use nix::pty::openpty;
use std::os::unix::io::FromRawFd;
use std::process::{Child, Command, Stdio};

#[derive(Debug)]
pub struct Pty {
    process: Child,
    fd: i32,
}

fn create_pty(process: &str) -> Pty {
    let ends = openpty(None, None).expect("openpty failed");
    let master = ends.master;
    let slave = ends.slave;

    let mut builder = Command::new(process);
    builder.stdin(unsafe { Stdio::from_raw_fd(slave) });
    builder.stdout(unsafe { Stdio::from_raw_fd(slave) });
    builder.stderr(unsafe { Stdio::from_raw_fd(slave) });

    match builder.spawn() {
        Ok(process) => {
            let pty = Pty {
                process,
                fd: …
Run Code Online (Sandbox Code Playgroud)

unix libc tty pty rust

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