有没有一种方法可以在linux终端中用NASM编码来显示像notify-send命令这样的消息?
我在Ubuntu中使用这个命令:
notify-send "Test"是否可以使用NASM显示类似的内容?
发布于 2013-12-02 12:14:23
是否要将文本发送到桌面并显示在弹出窗口中?嗯,我对notify-send的东西一无所知,所以我搜索了一下,发现你可以用notify库写一些东西。总而言之,我花了10分钟阅读了一些文档,并编写了示例代码……
bits 64
extern notify_init, notify_notification_new, notify_notification_show, notify_uninit
extern exit
section .data
name db "Sample Notification", 0
title db "Just a test", 0
global main
section .text
main:
mov rdi, name
call notify_init
mov rdx, 0
mov rsi, title
mov rdi, name
call notify_notification_new
mov rsi, 0
mov rdi, rax
call notify_notification_show
call notify_uninit
call exitmakefile:
APP = notify
$(APP): $(APP).o
gcc -o $(APP) $(APP).o -lnotify
$(APP).o: $(APP).asm
nasm -f elf64 $(APP).asm您需要使用apt-get或包管理器安装libnotify-dev
它对于32位系统应该是类似的。
发布于 2020-10-04 12:37:20
很好的例子。我不知道这是可以做到的。只是我遇到的一个小问题。没有-fPIE我不能编译它,即使使用它,我也不能编译它(也许C专家可以帮助我)。
一个解决方案是(对原始代码稍作修改:用全局_start和标签main: with _start: replave全局main :然后使用next makefile:
BIN=notify
NASM=/usr/bin/nasm
NASMOPTS=-felf64 -Fdwarf
LDOPS=-melf_x86_64 -g --dynamic-linker /lib64/ld-linux-x86-64.so.2
LIBS=-lc -lnotify
.PHONY: all clean
all: $(BIN)
clean:
rm -rf $(BIN)
%: %.asm
$(NASM) $(NASMOPTS) -o $@.o $<
$(LD) $(LDOPS) -o $@ $@.o $(LIBS)
rm -f $@.ohttps://stackoverflow.com/questions/20317417
复制相似问题