2017-06-12 5 views
0

J'essaie de faire fonctionner OpenMP avec VLC (version Android) mais sans succès.Intégration d'OpenMP dans VLC

Comme recommandé par Google, je a ajouté à la Android.mk fichier (/ vlc-android/libvlc/JNI):

LOCAL_CFLAGS += -fopenmp 
LOCAL_LDFLAGS += -fopenmp 

Mais je continue à obtenir:

error: undefined reference to 'omp_set_num_threads' 
error: undefined reference to 'omp_get_thread_num' 
error: undefined reference to 'omp_get_num_threads' 

Je me demande si quelqu'un peut m'aider à surmonter cette erreur.

Android.mk:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libvlc 
ARCH=$(APP_ABI) 
LOCAL_SRC_FILES += libvlcjni-modules.c libvlcjni-symbols.c dummy.cpp 
LOCAL_LDFLAGS := -L$(VLC_CONTRIB)/lib 
LOCAL_LDLIBS := \ 
    $(VLC_MODULES) \ 
    $(VLC_BUILD_DIR)/lib/.libs/libvlc.a \ 
    $(VLC_BUILD_DIR)/src/.libs/libvlccore.a \ 
    $(VLC_BUILD_DIR)/compat/.libs/libcompat.a \ 
    $(VLC_CONTRIB_LDFLAGS) \ 
    -ldl -lz -lm -llog \ 
    -lliveMedia -lUsageEnvironment -lBasicUsageEnvironment -lgroupsock \ 
    -la52 -ljpeg \ 
    -lavcodec -lebml \ 
    -llua \ 
    -lgcrypt -lgpg-error \ 
    $(VLC_LDFLAGS) 

include $(BUILD_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := libvlcjni 

LOCAL_SRC_FILES := libvlcjni.c 
LOCAL_SRC_FILES += libvlcjni-mediaplayer.c 
LOCAL_SRC_FILES += libvlcjni-vlcobject.c 
LOCAL_SRC_FILES += libvlcjni-media.c libvlcjni-medialist.c libvlcjni-mediadiscoverer.c 
LOCAL_SRC_FILES += libvlcjni-dialog.c 
LOCAL_SRC_FILES += thumbnailer.c 
LOCAL_SRC_FILES += std_logger.c 

LOCAL_LDLIBS := -llog 
LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/include 

ARCH=$(APP_ABI) 

LOCAL_CFLAGS := -std=c11 
ifeq ($(ARCH), armeabi-v7a) 
    LOCAL_CFLAGS += -DHAVE_ARMEABI_V7A 
endif 

LOCAL_SHARED_LIBRARIES:= libvlc 

include $(BUILD_SHARED_LIBRARY) 
+1

W Quel compilateur (version)? Dans quel OS faites-vous la compilation? –

+0

OS est Ubuntu 16.04, j'ai ajouté le fichier make à mon poste. Je vous remercie. – RonTLV

+0

Je ne vois pas 'LOCAL_LDFLAGS + = -fopenmp' dans le makefile affiché, même chose pour' LOCAL_CFLAGS + = -fopenmp', seule l'assignation (': =') est nécessaire? – purplepsycho

Répondre

0

Pour les futurs utilisateurs, je réussi à résoudre ce problème en ajoutant:

LOCAL_CFLAGS := -std=c99 -fopenmp 

et -lgomp à LOCAL_LDLIBS:

LOCAL_LDLIBS := \ 
    $(VLC_MODULES) \ 
    $(VLC_BUILD_DIR)/lib/.libs/libvlc.a \ 
    $(VLC_BUILD_DIR)/src/.libs/libvlccore.a \ 
    $(VLC_BUILD_DIR)/compat/.libs/libcompat.a \ 
    $(VLC_CONTRIB_LDFLAGS) \ 
    -ldl -lz -lm -llog \ 
    -lliveMedia -lUsageEnvironment -lBasicUsageEnvironment -lgroupsock \ 
    -la52 -ljpeg \ 
    -lavcodec -lebml \ 
    -llua -lgomp \ 
    -lgcrypt -lgpg-error \ 
    $(VLC_LDFLAGS) 

Référence: OpenMP library specification