运行示例 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,找到链接器标志,将它们复制到我的编译命令中,并继续删除标志,直到我找到仍然可以编译的最小集合。
这是低效的,无聊的,让我觉得必须有更好的方法。
我喜欢 ccze 的默认花式输出,但我似乎无法获得它的滚动属性。执行
tail -f something.log | ccze
Run Code Online (Sandbox Code Playgroud)
从 X 终端工作,但一旦屏幕被填满,我就无法向后滚动(shift+pgup 不做任何事情)。
我怎样才能让它按预期工作?
ARM 机器通常有一个默认密码。在 Arch Linux 上,这是:
用户:报警
密码:闹钟
我假设“alarm”的“arm”部分指的是架构,但“al”代表什么?
也许我完全偏离了我的假设。
我已经通过 CD 映像安装了一个最小的 Debian 9。我将 Apt 配置为不安装推荐的软件包,现在系统没有任何手册页。
man apt-get, man mkdir, 或man ping不显示任何手册页;相反,我得到
bash: man: command not found
Run Code Online (Sandbox Code Playgroud) 我正在尝试导入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) 我今天安装了 X11 的开发包,现在想删除它们。我不记得我安装的软件包的确切名称。我通过运行安装apt-get install ...,现在想使用 删除开发包apt-get purge --auto-remove <name of package>。有什么建议么?
继另一个用户的问题之后,我遇到了一个我无法轻易合理化的 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归我自己的用户~所有,当然归我自己的用户所有。我可以重命名和移动另一个用户拥有的文件。我可以重命名另一个用户拥有的目录,但我不能移动另一个用户拥有的目录。
这似乎是一个非常具体的限制,我不明白正在保护什么危险或什么潜在机制意味着它只能以这种方式工作。
为什么其他用户的目录不能移动?
当我运行命令时
./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) 在 Debian Stretch 上,某些软件包仅在stretch-backports-sloppy. 存储库是stretch-backports-sloppy用来做什么的?sloppy和普通的有什么区别\xe2\x80\xa6-backports?
我正在创建一个对文件进行一些处理的脚本。对于文件,\xce\x99 将从当前目录中选择任何文件或给出文件的路径。
\n问题是文件名可能很大,因此输入所有内容会很痛苦。
\necho "Enter file name"\nread FILE\nRun Code Online (Sandbox Code Playgroud)\n上面的代码演示了我正在尝试做的事情。运行这个脚本时,我必须一个字符一个字符地输入文件名,这将是一个巨大的痛苦。我想通过按 来获得像在任何终端应用程序中一样的建议Tab。
\n\napt ×2
bash ×2
debian ×2
linux ×2
arch-linux ×1
autocomplete ×1
backports ×1
c ×1
colors ×1
compiling ×1
defaults ×1
directory ×1
ld ×1
man ×1
mv ×1
password ×1
permissions ×1
python ×1
repository ×1
shell-script ×1
terminal ×1
terminology ×1
ubuntu ×1
uninstall ×1
users ×1
x11 ×1