NASM通知发送?

时间:2013-12-01 21:22:13

标签: linux ubuntu terminal nasm

有没有办法在linux终端中显示类似notify-send命令的消息,用NASM编码?

我在Ubuntu中使用此命令:

notify-send "Test"

是否可以使用NASM显示类似的内容?

2 个答案:

答案 0 :(得分:0)

您想将文本发送到桌面并在弹出窗口中显示?好吧,我对notify-send事物一无所知,所以我做了一个搜索,发现你可以用通知库写一些东西。总而言之,我花了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    exit

生成文件:

APP = notify
$(APP): $(APP).o
    gcc -o $(APP) $(APP).o -lnotify

$(APP).o: $(APP).asm
    nasm -f elf64 $(APP).asm

您需要使用libnotify-dev或您的软件包管理器

安装apt-get

对于32位系统应该是类似的。

Gnome Notify Docs

答案 1 :(得分:0)

很好的例子。不知道可以做到。我遇到的只是一个小问题。如果没有-fPIE,我将无法编译它,即使使用它,我也无法进行编译(也许C专家cn会帮助我)。

对此的解决方案是(原始代码稍作修改: 用global _start代替global main和 标签main:和_start: 然后使用下一个生成文件:

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 $@.o