私はstrcmp bashビルトインを書いています。それは罰金コンパイルが、私はそれを有効にしようとすると、私が手:私の組み込みのロード可能なBashビルトイン
$ enable -f ./strcmp strcmp
bash: enable: cannot open shared object ./strcmp: ./strcmp: only ET_DYN and ET_EXEC can be loaded
大きな部品:
strcmp_builtin (list)
WORD_LIST *list;
char *strcmp_doc[] = {
(char *)NULL
};
struct builtin strcmp_struct = {
"strcmp", /* builtin name */
strcmp_builtin, /* function implementing the builtin */
BUILTIN_ENABLED, /* initial flags for builtin */
strcmp_doc, /* array of long documentation strings. */
"strcmp 'string 1' 'string 2'", /* usage synopsis; becomes short_doc */
0 /* reserved for internal use */
};
(拡大makeファイルから)コンパイル行:
~/bash-4.2/examples/loadables $ gcc -fPIC -DHAVE_CONFIG_H -DSHELL \
-g -O2 -I. -I.. -I../.. -I../../lib -I../../builtins -I../../include \
-I~/bash-4.2 -I~/bash-4.2/lib -I~/bash-4.2/builtins -c \
-o strcmp strcmp.c
私はET_DYNとET_EXECをグーグルで見つけましたが、このような質問へのリンクしか見つかりませんでした。
見ていなくてもmakeファイルを信頼してください。うん、好きではなかった。ありがとう! –