■掲示板に戻る■ 全部 1- 最新50ELFかAOUTかの判定
- 1 :名無しさん@お腹いっぱい。 :2001/01/29(月) 22:45
- *BSDやLinuxやSolarisなどで(できる限り特定OSに依存したくない)
ELFかAOUTかを判定する方法ってありませんか?
FreeBSDだと/etc/objformatなどに書いてたりするんですが。
- 2 :名無しさん@お腹いっぱい。 :2001/01/29(月) 22:54
- file コマンドじゃだめ?
- 3 :名無しさん@お腹いっぱい。 :2001/01/29(月) 22:58
- % head -c 4 /bin/ls | tail -c 3
で "ELF" と出ればその環境は ELF がデフォルトだとみなしていいのでは。
- 4 :名無しさん@お腹いっぱい。 :2001/01/29(月) 23:30
- こうりつの良い判定法
% cc a.c
% ls
a.c a.out*
- 5 :???????????????B :2001/01/29(月) 23:37
- ELF 環境だと
% cc a.c
% ls
a.c elf
ですね。なるほど。
- 6 :???????????????B :2001/01/29(月) 23:38
- file(1) だが, 結局のところ magic(5) だ.
自分のプログラムで何とかしたいとかなら magic の中身
読んでみれ.
以上.
FreeBSD, Solaris 共に magic の置場所は違うので
man してくれ.
- 7 :名無しさん :2001/01/30(火) 00:05
- >>4-5 Solaris には使えないわざな気がする
- 8 :名無しさん@お腹いっぱい。 :2001/01/30(火) 00:33
- file(1)じゃ出力のフォーマットが保証できないからだめだろ。
- 9 :1 :2001/01/30(火) 01:17
- どうもです。
ちょっと検索したら資料がすぐに資料が見つかりました。
# なんだか、恥ずかしい。
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz
自分のプログラムで使いたいので書いてみました。
こんなのでいいのかな、、、
#include <stdio.h>
#include <string.h>
int
is_elf_executable( const char *file )
{
FILE *fp = fopen( file, "rb" );
if ( fp == NULL )
{
return 0;
}
{
unsigned char sig[ 4 ] = { 0, 0, 0, 0 };
unsigned char elf[ 4 ] = { 0x7F, 'E', 'L', 'F' };
fread( sig, 4, 1, fp );
fclose( fp );
return memcmp( sig, elf, 4 ) == 0;
}
}
int
main( int argc, char **argv )
{
if ( argc != 2 )
{
printf( "Usage: iself file\n" );
return 1;
}
if ( is_elf_executable( argv[ 1 ] ) )
{
printf( "OK\n" );
}
else
{
printf( "ERROR\n" );
}
return 0;
}
- 10 :名無しさん@お腹いっぱい。 :2001/01/30(火) 01:30
- >>1
逝ってよし
- 11 :名無しさん@お腹いっぱい。 :2001/01/30(火) 12:01
- >>5
あれ?ELFでもデフォの出力はa.outじゃないの?
- 12 :5 :2001/01/30(火) 14:22
- いや、あの…ねぇ? 野暮なこと言わせるでないよ、この子は :-)
- 13 :11 :2001/01/30(火) 20:05
- >>12
すんません、4への皮肉だったんですね。鬱だ氏のう。
- 14 :名無しさん@お腹いっぱい。 :2001/01/30(火) 20:33
- >>13
つかホントに逝っちゃってください
空気が読めず、掛合いの妙がわからない方は2ちゃんすら早すぎます
わざとなら、なおのことです
- 15 :???????????????B :2001/01/30(火) 22:08
- >>13
> 4への皮肉だったんですね
いえ、4の振ったネタにのったつもりです。この際、
4が本気なのかネタなのかはどっちでもよし。
まぁ、マターリ仲良く逝きましょうや。
- 16 :名無しさん@お腹いっぱい。 :2001/01/31(水) 03:01
- age
- 17 :名無しさん@お腹いっぱい。 :2001/01/31(水) 03:07
- なんなんだこの板は。
- 18 :名無しさん@お腹いっぱい。 :2001/01/31(水) 04:20
- 耳が尖ってるのが elfだよ
- 19 : :[ここ壊れています]
- [ここ壊れています]
- 20 :病弱名無しさん :2001/01/31(水) 06:53
- Dragon knight 5!!
- 21 :名無しさん@お腹いっぱい。 :2001/01/31(水) 12:58
- linux だと libbfd だよ、きっと。もっともなぜ /usr/share/magic があるのに
libbfd が必要なのか良く分からないが。
- 22 :名無しさん@そうだドライブへいこう :2001/02/04(日) 12:44
- >>13
結構うまくできてたとおもうよーノリボケ
一瞬ドキっとした人は手をあげましょう。
- 23 :1 :2001/02/04(日) 15:05
- >>22
しました。
- 24 :名無しさん@お腹いっぱい。 :2001/02/04(日) 16:47
- lddじゃ、だめなんでしょうか・・?
新着レスの表示
掲示板に戻る 全部 次100 最新50read.cgi ver5.26+ (01/10/21-)