C動的ロードファイルが短すぎますか?

最古

Cを使用して動的ロードを試していますが、最初の段階で問題が発生しました。実行時にオブジェクトをロードする小さなプログラムがあります。オブジェクトには、いくつかのメッセージをstdinに書き込む単一の関数が含まれています。これは、OS X10.10でclangを使用してコンパイルされています。コードは次のとおりです。

/* loader.c */

#include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>
#include "module.h"

int main(int argc, char **argv) {

    char file[] = "/users/user/dev/module.o";
    void *handle;
    int (*function)();

    handle = dlopen(file, RTLD_NOW);

    if (!handle) {

        printf("Cannot load program. Error: %s\n", dlerror());

        return 1;

    }

    program = dlsym(handle, "function");

    printf("Program loaded");

    function();

    printf("Exiting");

    return 0;

}

ここにmodule.hがあります:

/* module.h */

int
function();

ここにmodule.cがあります:

/* module.c */

#include <stdio.h>
#include <unistd.h>

int function() {

    printf("Hello from module");
    sleep(1);
    printf("Hello from module again");

    return 0;
}

Makefileは次のとおりです。

loader : loader.c module.o
    cc  -Wall loader.c -ldl -o loader

module.o : module.c
    cc -Wall -fpic -c module.c

これは警告なしでコンパイルされますが、期待どおりに実行されません。プログラムは次のエラーを返します。

Error: dlopen(/users/user/dev/module.o, 2): no suitable image found. Did find: /users/user/dev/module.o: file too short

私は調べましたが、このエラーメッセージについてはあまりありません。このプログラムはdlopen、TLDPに基づいています。これは、動的にロードするためにファイルが特定のサイズである必要があることを意味しますか、それともこれらのファイルのコンパイル方法に問題がありますか?

シンプルなものが足りない気がします。

このプログラムを期待どおりに実行するにはどうすればよいですか?

三十二大佐

dlopen通常のオブジェクトファイル(ではなく、共有ライブラリ(*.so)をロードます*.oそれらは互換性のないフォーマットです。

gccの場合libmodule.so-sharedフラグを出力して使用して共有ライブラリを作成する必要があります(cc同じフラグを使用するかどうかわかりません)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

共有ライブラリのロード中にエラーが発生しました。ファイルが短すぎます

分類Dev

共有ライブラリのロード中にエラーが発生しました:/ tmp / zshgYCSAH:ファイルが短すぎます

分類Dev

m4aファイルの連結が長すぎるか短すぎる

分類Dev

共有ライブラリのロード中にエラーが発生しました。ファイルは短すぎる

分類Dev

PHPファイルのダウンロードパスが長すぎます

分類Dev

HDFSノードのOOMファイルが多すぎますか?

分類Dev

SHGetFileInfo:ファイル拡張子の説明が短すぎます

分類Dev

NSURLダウンロードファイル、インジケーターの表示が遅すぎます

分類Dev

csvファイルをBQにロードします-位置引数が多すぎます

分類Dev

scpがローカルファイルをコピーするのを防ぎますか?

分類Dev

セレンがファイルのダウンロードに時間がかかりすぎる

分類Dev

nginxロードバランサー開いているファイルが多すぎます

分類Dev

名前が長すぎるファイルをアップロードする

分類Dev

Rails FTPダウンロード画像:開いているファイルが多すぎます

分類Dev

numpy ロードの使用中に開いているファイルが多すぎます

分類Dev

XBuildはプロジェクトファイルが多すぎますが、MSBuildで動作します

分類Dev

GitHubのクローン作成で「ファイル名が長すぎます」

分類Dev

android studioVCSローカル履歴が短すぎます

分類Dev

hdfsログファイルが大きすぎます

分類Dev

awk:出力ファイルが多すぎます10レコード番号12

分類Dev

ロード時にAngular2が多すぎるファイル要求

分類Dev

アップロードされたファイルが大きすぎるphp

分類Dev

Django WagtailCMSファイルが大きすぎてアップロードできません

分類Dev

ファイルの実行回数が多すぎますか?

分類Dev

プログラムが配列内のファイルが多すぎると動作を停止します

分類Dev

settings.iniファイルからTabControlを自動ロードします

分類Dev

エラーファイル名が長すぎますYoctoProject

分類Dev

xargsエラー:ファイル名が長すぎます

分類Dev

BlackBerry-CSSをインポートしようとすると、BrowserFieldがローカルのhtmlファイルをロードするのに時間がかかりすぎ、スタイルシートも適用されません

Related 関連記事

  1. 1

    共有ライブラリのロード中にエラーが発生しました。ファイルが短すぎます

  2. 2

    共有ライブラリのロード中にエラーが発生しました:/ tmp / zshgYCSAH:ファイルが短すぎます

  3. 3

    m4aファイルの連結が長すぎるか短すぎる

  4. 4

    共有ライブラリのロード中にエラーが発生しました。ファイルは短すぎる

  5. 5

    PHPファイルのダウンロードパスが長すぎます

  6. 6

    HDFSノードのOOMファイルが多すぎますか?

  7. 7

    SHGetFileInfo:ファイル拡張子の説明が短すぎます

  8. 8

    NSURLダウンロードファイル、インジケーターの表示が遅すぎます

  9. 9

    csvファイルをBQにロードします-位置引数が多すぎます

  10. 10

    scpがローカルファイルをコピーするのを防ぎますか?

  11. 11

    セレンがファイルのダウンロードに時間がかかりすぎる

  12. 12

    nginxロードバランサー開いているファイルが多すぎます

  13. 13

    名前が長すぎるファイルをアップロードする

  14. 14

    Rails FTPダウンロード画像:開いているファイルが多すぎます

  15. 15

    numpy ロードの使用中に開いているファイルが多すぎます

  16. 16

    XBuildはプロジェクトファイルが多すぎますが、MSBuildで動作します

  17. 17

    GitHubのクローン作成で「ファイル名が長すぎます」

  18. 18

    android studioVCSローカル履歴が短すぎます

  19. 19

    hdfsログファイルが大きすぎます

  20. 20

    awk:出力ファイルが多すぎます10レコード番号12

  21. 21

    ロード時にAngular2が多すぎるファイル要求

  22. 22

    アップロードされたファイルが大きすぎるphp

  23. 23

    Django WagtailCMSファイルが大きすぎてアップロードできません

  24. 24

    ファイルの実行回数が多すぎますか?

  25. 25

    プログラムが配列内のファイルが多すぎると動作を停止します

  26. 26

    settings.iniファイルからTabControlを自動ロードします

  27. 27

    エラーファイル名が長すぎますYoctoProject

  28. 28

    xargsエラー:ファイル名が長すぎます

  29. 29

    BlackBerry-CSSをインポートしようとすると、BrowserFieldがローカルのhtmlファイルをロードするのに時間がかかりすぎ、スタイルシートも適用されません

ホットタグ

アーカイブ