Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Clang et LLDB Discussion :

Problème compilation CLANG - EMCC


Sujet :

Clang et LLDB

  1. #1
    Membre actif
    Problème compilation CLANG - EMCC
    Bonjour,
    Je ne sais pas trop sur quel forum poster parce que mon problème est à plusieurs étages et c'est plus un problème de compil que de C.
    Mais comme c'est à la compilation du fichier C que ça déconne j'ai posté ici.
    De plus je n'ai pas l'habitude de compiler des choses à la main (débutant complet là dessus)
    Merci aux costaud(e)s de la compil qui pourraient jeter un oeil !

    Explications :
    J'ai compilé deux fichiers python avec Cython en .c cela fonctionne à merveille. Le deuxième est compilé avec --embed pour avoir un main.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    cython3 fibo.pyx
    cython3 --embed test_fibo.py -o test.c


    Ensuite j'ai compilé avec gcc avec ces deux commandes (que je n'ai pas trop cherché à comprendre, j'ai repris un tuto).
    Tout ce que je sais c'est que l'un me fait un .exe et l'autre un .so. et qu'à la fin il y a un -l pour qu'il sache quelle librairie utiliser.
    Jusqu'ici tout va bien.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcc fibo.c -o fibo.so -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing $(pkg-config python3 --cflags) -lpython3.5m
    gcc test.c -o test $(pkg-config python3 --cflags) -lpython3.5m


    Comme mon but ext de transformer ça pour faire de l'asmjs, j'ai essayé de compiler avec emcc, ça n'a pas marché avec la commande la plus simple voici.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    emcc test.c $(pkg-config python3 --cflags)


    donc j'ai coulu voir la compilation clang, comme ça passe tous les deux par llvm... et j'ai eu le même genre d'erreur, je mets celle-ci plutôt que celle de emcc car j'imagine qu'il y a plus de gens qui connaissent, à mon avis la solution sera la même.
    J'imagine que c'est le même genre de problème qu'avec gcc (indiquer une bibliothèque) mais je ne sais pas comment faire. voici la ligne de commande et l'erreur qui en découle j'ai rajouté le -v pour que vous puissiez avoir plus de détails, moi je n'y comprend que dalle sauf qu'il lui manquerait des librairies :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
      clang test.c $(pkg-config python3 --cflags) -v
    Debian clang version 3.6.2-3 (tags/RELEASE_362/final) (based on LLVM 3.6.2)
    Target: x86_64-pc-linux-gnu
    Thread model: posix
    Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8
    Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8.5
    Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9
    Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/4.9.3
    Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1
    Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
    Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
    Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
    Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
    Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.3.1
    Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1
    Candidate multilib: .;@m64
    Candidate multilib: 32;@m32
    Candidate multilib: x32;@mx32
    Selected multilib: .;@m64
     "/usr/lib/llvm-3.6/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name test.c -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -target-linker-version 2.25.1 -v -dwarf-column-info -resource-dir /usr/lib/llvm-3.6/bin/../lib/clang/3.6.2 -I /usr/include/python3.5m -I /usr/include/x86_64-linux-gnu/python3.5m -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-3.6/bin/../lib/clang/3.6.2/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir /home/dpolizzi/python/cython -ferror-limit 19 -fmessage-length 242 -mstackrealign -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/test-d29e8f.o -x c test.c
    clang -cc1 version 3.6.2 based upon LLVM 3.6.2 default target x86_64-pc-linux-gnu
    ignoring nonexistent directory "/include"
    #include "..." search starts here:
    #include <...> search starts here:
     /usr/include/python3.5m
     /usr/include/x86_64-linux-gnu/python3.5m
     /usr/local/include
     /usr/lib/llvm-3.6/bin/../lib/clang/3.6.2/include
     /usr/include/x86_64-linux-gnu
     /usr/include
    End of search list.
     "/usr/bin/ld" --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crt1.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/crtbegin.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/../../.. -L/usr/lib/llvm-3.6/bin/../lib -L/lib -L/usr/lib /tmp/test-d29e8f.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/crtend.o /usr/bin/../lib/gcc/x86_64-linux-gnu/5.3.1/../../../x86_64-linux-gnu/crtn.o
    /tmp/test-d29e8f.o*: Dans la fonction «*PyInit_test_fibo*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x65)*: référence indéfinie vers «*PyTuple_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xcc)*: référence indéfinie vers «*PyBytes_FromStringAndSize*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x134)*: référence indéfinie vers «*PyModule_Create2*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x195)*: référence indéfinie vers «*PyModule_GetDict*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x20d)*: référence indéfinie vers «*PyImport_AddModule*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x280)*: référence indéfinie vers «*PyObject_SetAttrString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x309)*: référence indéfinie vers «*PyObject_SetAttrString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x33d)*: référence indéfinie vers «*PyImport_GetModuleDict*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x39c)*: référence indéfinie vers «*PyDict_GetItemString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3c3)*: référence indéfinie vers «*PyDict_SetItemString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x475)*: référence indéfinie vers «*PyList_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x616)*: référence indéfinie vers «*PyDict_SetItem*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x86e)*: référence indéfinie vers «*PyDict_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x8d3)*: référence indéfinie vers «*PyDict_SetItem*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xad3)*: référence indéfinie vers «*PyErr_Occurred*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xaf1)*: référence indéfinie vers «*PyExc_ImportError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xaf6)*: référence indéfinie vers «*PyErr_SetString*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_check_binary_version*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xb4e)*: référence indéfinie vers «*PyOS_snprintf*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xb64)*: référence indéfinie vers «*Py_GetVersion*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xb86)*: référence indéfinie vers «*PyOS_snprintf*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xbe0)*: référence indéfinie vers «*PyOS_snprintf*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xc01)*: référence indéfinie vers «*PyErr_WarnEx*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_InitGlobals*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xc75)*: référence indéfinie vers «*PyLong_FromLong*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_InitCachedConstants*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xd2a)*: référence indéfinie vers «*PyTuple_Pack*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_Import*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xe03)*: référence indéfinie vers «*PyList_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xe2f)*: référence indéfinie vers «*PyModule_GetDict*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xe4b)*: référence indéfinie vers «*PyDict_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xeaa)*: référence indéfinie vers «*PyImport_ImportModuleLevelObject*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xec4)*: référence indéfinie vers «*PyExc_ImportError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xec9)*: référence indéfinie vers «*PyErr_ExceptionMatches*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xede)*: référence indéfinie vers «*PyErr_Clear*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xf11)*: référence indéfinie vers «*PyImport_ImportModuleLevelObject*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_ImportFrom*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x104e)*: référence indéfinie vers «*PyExc_AttributeError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1053)*: référence indéfinie vers «*PyErr_ExceptionMatches*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1070)*: référence indéfinie vers «*PyExc_ImportError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x107b)*: référence indéfinie vers «*PyErr_Format*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_GetModuleGlobalName*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x10a9)*: référence indéfinie vers «*PyDict_GetItem*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_PyObject_Call*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x116a)*: référence indéfinie vers «*PyObject_Call*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1178)*: référence indéfinie vers «*PyThreadState_Get*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x118f)*: référence indéfinie vers «*_Py_CheckRecursionLimit*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x11a7)*: référence indéfinie vers «*_Py_CheckRecursiveCall*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x11f6)*: référence indéfinie vers «*PyThreadState_Get*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1209)*: référence indéfinie vers «*_Py_CheckRecursionLimit*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x121d)*: référence indéfinie vers «*_Py_CheckRecursionLimit*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1231)*: référence indéfinie vers «*_Py_CheckRecursionLimit*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1250)*: référence indéfinie vers «*PyThreadState_Get*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1284)*: référence indéfinie vers «*PyErr_Occurred*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x12bd)*: référence indéfinie vers «*PyExc_SystemError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x12c2)*: référence indéfinie vers «*PyErr_SetString*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_PrintOne*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1301)*: référence indéfinie vers «*PyTuple_Pack*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_AddTraceback*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1467)*: référence indéfinie vers «*PyThreadState_Get*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x147d)*: référence indéfinie vers «*PyFrame_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x14a7)*: référence indéfinie vers «*PyTraceBack_Here*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_main*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x17d2)*: référence indéfinie vers «*Py_SetProgramName*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x17d7)*: référence indéfinie vers «*Py_Initialize*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x17fe)*: référence indéfinie vers «*PySys_SetArgv*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x181f)*: référence indéfinie vers «*PyErr_Occurred*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1830)*: référence indéfinie vers «*PyErr_Print*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x18ad)*: référence indéfinie vers «*Py_Finalize*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_Print*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1c91)*: référence indéfinie vers «*PyObject_GetAttr*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1ccf)*: référence indéfinie vers «*PyDict_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1d1d)*: référence indéfinie vers «*PyDict_SetItem*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1d69)*: référence indéfinie vers «*PyUnicode_FromStringAndSize*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1db0)*: référence indéfinie vers «*PyDict_SetItem*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1e94)*: référence indéfinie vers «*PyDict_New*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1eeb)*: référence indéfinie vers «*PyUnicode_FromStringAndSize*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1f3d)*: référence indéfinie vers «*PyDict_SetItem*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x200d)*: référence indéfinie vers «*PyObject_Call*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_CreateCodeObjectForTraceback*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x230b)*: référence indéfinie vers «*PyUnicode_FromString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x234f)*: référence indéfinie vers «*PyUnicode_FromFormat*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2361)*: référence indéfinie vers «*PyUnicode_FromString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x243e)*: référence indéfinie vers «*PyCode_New*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__pyx_insert_code_object*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2643)*: référence indéfinie vers «*PyMem_Malloc*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x27c4)*: référence indéfinie vers «*PyMem_Realloc*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_GetBuiltinName*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2a38)*: référence indéfinie vers «*PyExc_NameError*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2a43)*: référence indéfinie vers «*PyErr_Format*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_PyObject_GetAttrStr*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2ace)*: référence indéfinie vers «*PyObject_GetAttr*»
    /tmp/test-d29e8f.o*: Dans la fonction «*__Pyx_InitStrings*»*:
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2b32)*: référence indéfinie vers «*PyUnicode_InternFromString*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2b86)*: référence indéfinie vers «*PyUnicode_Decode*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2bb3)*: référence indéfinie vers «*PyUnicode_FromStringAndSize*»
    test.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2be5)*: référence indéfinie vers «*PyBytes_FromStringAndSize*»
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

  2. #2
    Membre actif
    Finalement... EMCC
    Finalement j'ai réussi à compiler avec CLANG en faisant ceci, il suffisait de fournir la librairie correctement
    clang test.c -o test $(pkg-config python3 --cflags) -lpython3.5m

    Pour l'exécuter ensuite j'ai utilisé le .so généré à partir de gcc et ça marche.

    Maintenant mon problème est emscripten qui ne se comporte pas du tout comme je l'aurais imaginé...

    j'ai pour l'instant un warning identifiable + tout un tas d'erreur ensuite, mais je pense que si on trouve le pourquoi du warning, le reste va suivre !
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    emcc test.c -o test.js $(pkg-config python3 --cflags) -lpython3.5m
    WARNING:root:emcc: cannot find library "python3.5m"