linux 中 ASM命令作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 中 ASM命令作用相关的知识,希望对你有一定的参考价值。
如题,我是初学者,以前学过C++谁能解释下~~
oracle 10R2推出了asmcmd这个工具,可以用来管理asm存储上的文件。1.使用asmcmd命令必须先启动asm实例,不然会有以下报错:rac2-> asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)2.使用asmcmd必须先指定ORACLE_HOME和ORACLE_SID,注意此处ORACLE_SID是asm的sid,不然会报错:rac2-> asmcmd -p
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)3.asmcmd命令带p参数和不带p参数的作用:
带p,使用asmcmd将显示当前路径:rac2-> asmcmd -p
ASMCMD [+] > ls
DG1/
RECOVERDEST/
ASMCMD [+] > cd DG1
ASMCMD [+DG1] > ls
DEVDB/
ASMCMD [+DG1] > cd DEVDB
ASMCMD [+DG1/DEVDB] >不带p,不显示当前路径:rac2-> asmcmd
ASMCMD> ls
DG1/
RECOVERDEST/
ASMCMD> cd DG1
ASMCMD> ls
DEVDB/
ASMCMD> cd DEVDB
ASMCMD>4.其他相关参数,可使用help查看ASMCMD [+] > help
asmcmd [-p] [command]
The environment variables ORACLE_HOME and ORACLE_SID determine the
instance to which the program connects, and ASMCMD establishes a
bequeath connection to it, in the same manner as a SQLPLUS / AS
SYSDBA. The user must be a member of the SYSDBA group.
Specifying the -p option allows the current directory to be displayed
in the command prompt, like so:
ASMCMD [+DATAFILE/ORCL/CONTROLFILE] >
[command] specifies one of the following commands, along with its
parameters.
Type "help [command]" to get help on a specific ASMCMD command.
commands:
--------
cd
du
find
help
ls
lsct
lsdg
mkalias
mkdir
pwd
rm
rmalias 参考技术A oracle 10R2推出了asmcmd这个工具,可以用来管理asm存储上的文件
使用C程序编译ASM文件的命令[重复]
这个问题在这里已有答案:
使用à64Linux系统并使用NASM。
我正在尝试将我的ASM(hello.asm)文件与C文件(main.c)链接并编译为执行文件。
我创建了一个ASM文件,通过printHello函数使用printf打印“Hello”。
extern printf, exit
section .data
format db "Hello", 10, 0
section .text
global printHello
printHello:
sub rsp, 8
mov rsi, 0x12345677
mov rdi, format
xor rax, rax
call printf
mov rdi, 0
call exit
我创建一个简单的main.c并调用我的函数“printHello”来打印“Hello”
#include <stdio.h>
void printHello();
int main()
{
printHello();
}
我的编译命令:
$ nasm -f elf64 hello.asm
$ gcc -c main.c
$ gcc -o executable main.o hello.o
$ ./executable
它打印:
./executable: Symbol `printf' causes overflow in R_X86_64_PC32 relocation
./executable: Symbol `exit' causes overflow in R_X86_64_PC32 relocation
[1] 6011 segmentation fault ./executable
我已经在学习ASM了。问题来自我的命令还是我的代码?
答案
我使用您的@Jester解决方案解决了这个问题:
gcc -no-pie -o executable main.o hello.o
并感谢Ped7g的解释。
以上是关于linux 中 ASM命令作用的主要内容,如果未能解决你的问题,请参考以下文章
使用内联 PTX asm() 指令时,'volatile' 有啥作用?