小编Ste*_*itt的帖子

如何找出使用给定 C 库函数所需的链接器标志?

运行示例 C 代码是一项痛苦的练习,除非它带有 makefile。

我经常发现自己有一个 C 文件,其中包含的代码据说可以做一些很酷的事情,但是第一次基本的编译尝试 ( gcc main.c) 失败了——

main.c:(.text+0x1f): undefined reference to `XListInputDevices'
clang-3.7: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

——或类似。

我知道这意味着我缺少正确的链接器标志,例如-lX11,-lXext-lpthread

但哪些呢?


我目前处理这个问题的方法是找到包含一个函数的库头文件,使用 Github 的搜索来查找其他一些导入相同头文件的程序,打开它的 makefile,找到链接器标志,将它们复制到我的编译命令中,并继续删除标志,直到我找到仍然可以编译的最小集合。

这是低效的,无聊的,让我觉得必须有更好的方法。

compiling c ld

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

使用 ccze 滚动输出

我喜欢 ccze 的默认花式输出,但我似乎无法获得它的滚动属性。执行

tail -f something.log | ccze
Run Code Online (Sandbox Code Playgroud)

从 X 终端工作,但一旦屏幕被填满,我就无法向后滚动(shift+pgup 不做任何事情)。

我怎样才能让它按预期工作?

colors terminal

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

“alarm”中的“al”是什么,默认的 Arch Linux ARM 处理器用户名+密码代表什么?

ARM 机器通常有一个默认密码。在 Arch Linux 上,这是:

用户:报警

密码:闹钟

我假设“alarm”的“arm”部分指的是架构,但“al”代表什么?

也许我完全偏离了我的假设。

users password arch-linux defaults terminology

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

APT 默认不安装手册页

我已经通过 CD 映像安装了一个最小的 Debian 9。我将 Apt 配置为不安装推荐的软件包,现在系统没有任何手册页。

man apt-get, man mkdir, 或man ping不显示任何手册页;相反,我得到

bash: man: command not found
Run Code Online (Sandbox Code Playgroud)

man debian apt

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

导入错误fabric.api

我正在尝试导入fabric.api并遇到问题。我使用 pip 安装了结构,当我import fabric在解释器中运行时它可以正常工作。

但是当我这样做时,from fabric.api import *它会出现一个错误,提示“没有名为 api 的模块”。我正在使用 Python 2.7。我在这里缺少什么?

Python 2.7.10 (default, Oct  6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> version
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'version' is not defined
>>> import fabric
>>> import fabric.api
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: …
Run Code Online (Sandbox Code Playgroud)

python

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

如何卸载或删除最近安装的软件包

我今天安装了 X11 的开发包,现在想删除它们。我不记得我安装的软件包的确切名称。我通过运行安装apt-get install ...,现在想使用 删除开发包apt-get purge --auto-remove <name of package>。有什么建议么?

apt x11 uninstall

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

当您可以移动其他用户的文件时,为什么不能移动其他用户的目录?

另一个用户的问题之后,我遇到了一个我无法轻易合理化的 Linux 文件系统权限的怪癖:

sudo mkdir ~/foo ~/foo/bar
sudo touch ~/baz
mkdir ~/my_dir
chown 700 ~/my_dir
# this is fine
mv ~/baz ~/my_dir
# renaming is fine
mv ~/foo ~/bob
# Moving caused: Permission denied
mv ~/bob ~/my_dir/
Run Code Online (Sandbox Code Playgroud)

为清楚起见foo foo/bar baz,归根所有。 my_dir归我自己的用户~所有,当然归我自己的用户所有。我可以重命名和移动另一个用户拥有的文件。我可以重命名另一个用户拥有的目录,但我不能移动另一个用户拥有的目录。

这似乎是一个非常具体的限制,我不明白正在保护什么危险或什么潜在机制意味着它只能以这种方式工作。

为什么其他用户的目录不能移动?

linux permissions directory mv

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

得到错误:bash: ./program: cannot execute binary file: Exec format error

当我运行命令时

./program 
Run Code Online (Sandbox Code Playgroud)

我收到错误:

bash: ./program: cannot execute binary file: Exec format error
Run Code Online (Sandbox Code Playgroud)

当我运行时,uname -a我得到:

4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:34:49 UTC 2016 i686 i686 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我还检查了有关我试图运行的程序的信息,我得到了:

ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=c154cb3d21f6bbd505d165aed3aa6ed682729441, not stripped
Run Code Online (Sandbox Code Playgroud)

/proc/cpuinfo 显示

flags       : fpuvme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx …
Run Code Online (Sandbox Code Playgroud)

linux bash ubuntu

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

向后移植和向后移植-马虎之间有什么区别?

在 Debian Stretch 上,某些软件包仅在stretch-backports-sloppy. 存储库是stretch-backports-sloppy用来做什么的?sloppy和普通的有什么区别\xe2\x80\xa6-backports

\n

debian repository backports

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

将制表符补全添加到 bash 脚本中

我正在创建一个对文件进行一些处理的脚本。对于文件,\xce\x99 将从当前目录中选择任何文件或给出文件的路径。

\n

问题是文件名可能很大,因此输入所有内容会很痛苦。

\n
echo "Enter file name"\nread FILE\n
Run Code Online (Sandbox Code Playgroud)\n

上面的代码演示了我正在尝试做的事情。运行这个脚本时,我必须一个字符一个字符地输入文件名,这将是一个巨大的痛苦。我想通过按 来获得像在任何终端应用程序中一样的建议Tab

\n

我想要这样的东西像这样的东西Tab在写入文件名时按下时显示。我怎样才能实现这个目标?

\n

bash autocomplete shell-script

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