问题标签 [bionic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
337 浏览

android - proc/pid/maps 条目的顺序

所以地图文件中的每个条目都有它们被映射的开始结束地址。如果库是动态加载的(可能使用 dlopen()),以前条目的地址会受到任何影响吗?(当然假设进程的 pid 没有改变)。

换句话说,在 dlopen() 之前,这里是 maps-> 中的示例条目

addr1 - addr2 r-xp 00000000 08:02 135522 /usr/lib64/lib_sample.so

在 dlopen()'ing lib_demo.so 之后,lib_sample.so 的值 addr1/addr2 会改变吗?

具体来说,我想知道 Android 上的行为。

提前致谢。

0 投票
1 回答
110 浏览

android - 如何在仿生 libc 中获取 uid?

我正在尝试获取在仿生 libc 中调用 dns 文件的进程的 uid。我知道使用 current->cred->uid.val 用于获取 android/linux 内核中的 uid,但如何获取仿生 libc 中的 uid。我不认为同样会起作用。您能否建议我一种在仿生 libc 中获取 uid 的方法以及使用哪些标头?

0 投票
0 回答
310 浏览

android - 仿生 libc (android) 中的 sendmsg 套接字系统调用参数

我正在浏览仿生 libc 套接字系统调用,并注意到一些令人困惑的东西。android/bionic/libc/include/sys/socket.h 有一个 sendmsg 的系统调用声明为

__socketcall int sendmsg (int, const struct msghdr*, int);

而在其他地方 /android/bionic/libc/SYSCALLS.TXT #sockets 和 #sockets for x86 中 sendmsg 的系统调用声明有

int sendmsg(int, const struct msghdr*, unsigned int) arm,arm64,mips,mips64,x86_64

int sendmsg:socketcall:16(int, const struct msghdr*, unsigned int) x86

为什么标志数据类型的声明有变化(socket.h 中的 int 和 SYSCALLS.TXT 中的 unsigned int)。即使在 kernel/net/socket.c 中的内核系统调用中,系统调用也被定义为

SYSCALL_DEFINE3(sendmsg,int,fd,struct user_msghdr __user*,msg,unsigned int,flags) { }

该标志被声明为无符号整数。只有在 libc 的 include/sys/socket.h 中,标志是 int。你能解释一下为什么会这样吗?如果我在 socket.h 中将声明更改为 'unsigned int' 会发生什么

0 投票
1 回答
357 浏览

pthreads - 仿生libc中没有pthread库吗?

我正在使用工具链来交叉编译一些依赖于 android 的 lpthread 的库。它有 libc 的仿生版本。它说找不到 lpthred 并且在工具链中找不到 libpthread.so。那么仿生libc中没有pthread库吗?如果是,我需要做些什么来解决这种依赖关系?如果没有,我怎样才能获得 pthread 源,以便我可以通过交叉编译创建 libpthread.so?

0 投票
1 回答
282 浏览

android - 受精卵产生过程的 LD_DEBUG 模拟

我想知道 Android 是否可以让用户LD_DEBUG为 Zygote 生成的进程启用 -style 日志。如果不是 root 用户,我们可能无法app_process在自定义环境中启动 Zygote。因此,也许有一些系统属性或链接器 API 允许为某些可能包含本机库的可调试 Android 包获取动态链接器日志。

0 投票
0 回答
364 浏览

android - Android 的 C 代码交叉编译

我在Ubuntu 16.04 LTS下使用arm-linux-gnueabi工具为Android ARM交叉编译了我的 C 应用程序。我用静态链接标志编译它。这个 C 应用程序很大,而且它有复杂的 makefile。它编译成功,没有任何错误。但它在 Android 手机和 Ubuntu PC 上的行为不同。更准确地说,我有两个问题:

  1. popen()system()功能在 Android 上不起作用。它们被执行但什么也不做,也没有给出任何错误。我用肮脏的黑客解决了这个问题。
  2. fgets()函数在 Android 上工作起来很奇怪。

1.关于第一个问题。

我做了一些小研究,发现 Android 不使用普通的libc 库(glibc或其他正确实现 POSIX 标准的库)。它使用Bionic库而不是它(抱歉,Android 对我来说是新操作系统)。我查看了函数代码popen()system()注意到这些函数使用_PATH_BSHELL宏。_PATH_BSHELL是实际系统外壳的路径。此路径在 Android 上为“ /system/bin/sh ”,在 Ubuntu 上为“ /bin/sh ”。

当我理解它时,我试图挂钩popen()system()功能。我从仿生源复制了这些函数的代码,然后定义了宏#define _MY_PATH_BSHELL "/system/bin/sh"并替换execve(_MY_PATH_BSHELL, argp, environ);了调用,比如execve(_MY_PATH_BSHELL, argp, environ);调用。所以它开始正常工作。

2.关于第二个问题。

在 Ubuntu 上,这段代码可以正常工作:

但在 Android 上fgets()总是返回NULL,并且这个循环无限长。我尝试使用read()函数而不是fgets()它,它起作用了。在 Android 上,此代码read()可以正常工作:

我的问题。

  1. 如何巧妙而正确地解决我的popen()问题system()?我想我必须与仿生库静态链接。这样对吗?我如何在没有 Android Studio 的情况下在控制台中执行此操作?我读到有必要使用NDK,但我不清楚如何使用。
  2. 为什么fgets()Android 和 Ubuntu 上的行为不相似?
0 投票
0 回答
137 浏览

android - 仿生 libc 中的 pthread_mutex_t

我正在尝试将使用的代码移植glibc到 Android NDK 中并遇到一些与mutexes. 目前我们的代码使用mutex.__data.__count循环遍历所有锁,并一一释放,我们也使用它来检查该互斥体上是否有锁,但不幸bionic libc的是pthread_mutex_tstruct 只有一个成员value任何人都知道如何解决这个?

0 投票
2 回答
1808 浏览

docker - 尝试在 Linux Ubuntu 18.04 Bionic 上安装 Docker CE 时显示错误?

阅读包裹清单...完成

构建依赖树

读取状态信息...完成

将安装以下新软件包:

码头工人-ce

0 升级,1 新安装,0 删除,0 未升级。

需要得到0 B/33,8 MB的档案。

此操作后,181 MB将使用额外的磁盘空间。(

0 投票
0 回答
98 浏览

android - Android Bionic 中的哪些功能授予对硬件(相机、麦克风等)的访问权限?

我正在编写一个代码,该代码需要更改 Bionic 中访问相机、麦克风、位置、联系人等资源的功能(用于学术研究目的)。

我很难找到这些功能,因为几乎没有任何在线文档。

谁能提供有关这些功能的名称/位置的信息?

0 投票
2 回答
3498 浏览

amazon-web-services - 无法 RDP 到 Amazon EC2 实例(Windows 服务器)

启动 windows 2016、Amazon EC2 实例后,

我收到ec2-18-221-95-56.us-east-2.compute.amazonaws.com.rdp了连接到 Windows 实例的文件。

在我的 ubuntu 笔记本电脑上,单击 .rdp 文件,我在提供密码后收到以下消息:


Ubuntu 仿生笔记本电脑:

运行以下命令,以解决此问题(不走运):


如何解决这个问题?