4

私はrpc、つまり学習段階のiamを初めて使用します。以下のプログラムからログインしたユーザーを特定したくないので、この「cc samrpc.c -lrpcsvc」のようにコンパイルしましたが、エラーと警告が表示されました。

     samrpc.c: In function ‘main’:
 samrpc.c:9:1: warning: incompatible implicit declaration of built-in function ‘exit’       [enabled by default]
  samrpc.c:13:1: warning: incompatible implicit declaration of built-in function ‘exit’    [enabled by default]
/tmp/ccxyIUNJ.o: In function `main':
samrpc.c:(.text+0x51): undefined reference to `rnusers'
collect2: error: ld returned 1 exit status

プログラムをコンパイルする方法を詳しく教えてもらえますか?ワットは私が必要とする要件です注:samrpc.cはプログラム名です私のプログラムは以下にあります

 #include <stdio.h>
 int main(argc, argv)
 int argc;
 char **argv;
 { 
 int num;
  if (argc != 2) {
 fprintf(stderr, "usage: rnusers hostname\n");
 exit(1);
 }
 if ((num = rnusers(argv[1])) < 0) {
 fprintf(stderr, "error: rnusers\n");
 exit(-1);
 }
 printf("%d users on %s\n", num, argv[1]);
 return 0;
 }

}

4

1 に答える 1

-1

コードを確認してください

ld が 1 の終了ステータスを返したということは、メイン関数への未定義の参照があることを意味します。リンカーがプログラムへのエントリ ポイントを見つけられないためです。

あなたのコードでは main が適切に定義されていません ランタイム引数も適切に渡されていません

#include <stdio.h>
#include<process.h>
int main(int argc,char ** argv)
{
 int num;
  if (argc != 2) {
 fprintf(stderr, "usage: rnusers hostname\n");
 exit(1);
 }
 if ((num = rnusers(argv[1])) < 0) {
 fprintf(stderr, "error: rnusers\n");
 exit(-1);
 }
 printf("%d users on %s\n", num, argv[1]);
 return 0;
 }

main を適切に定義すると、動作するはずです

于 2015-12-18T16:13:34.750 に答える