Archive your object files into a library (e.g. libfoo.a) Then declare a prebuilt static library in your Android.mk, as in
.... include $(CLEAR_VARS) LOCAL_MODULE := libfoo_prebuilt LOCAL_SRC_FILES := /path/to/libfoo.a include $(PREBUILT_STATIC_LIBRARY) ... Then later reference it in the LOCAL_STATIC_LIBRARIES line of your main module .... LOCAL_STATIC_LIBRARIES := libfoo_prebuilt include $(BUILD_SHARED_LIBRARY) Read docs/PREBUILT.html for more details. Of course, the link is likely to fail if you use a cross-toolchain that doesn't support Android properly. On Thu, Jun 30, 2011 at 1:15 PM, s.rawat <[email protected]> wrote: > *NOTE: Changed the subject from > OLD :Cross compiling the android application using the jni call to invoke a > c method failing > NEW : Linking different object files created from crosstool with the > current shared library created from ndk-build* > > No, No success in this [?][?][?][?], I am not sure if I had written the > correct make file(Android.mk) , > I have boiled down the problem to this : > > (1)I havce three files file1.c file2.c file3.c , out of this I am making a > shared file .so using the ndk-build utility , I tried with file1.c and > started adding the file2 and 3. > With file1.c I get the shared library happily, as it doesnt have any > archtecture specific code, which i can load and call the c functionalities > of file1.c using JNI calls > here is the Android.mk for that : > > LOCAL_PATH := $(call my-dir) > > include $(CLEAR_VARS) > > #LOCAL_LDLIBS := -llog > > LOCAL_MODULE := testEngine > LOCAL_SRC_FILES := file1.c > # No special compiler flags. > LOCAL_CFLAGS += MY_FLAGS > LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog > include $(BUILD_SHARED_LIBRARY) > > But I need the fucntionalities of other two files as well but these two > files 1 and 2 contains the archtecture specifi code which are not gwtting > compiled by ndk, so what I did I seperately created the object files for > them file1.o and file2.o > using these commands : > my-tool-chain-gcc -fPIC -g -c -Wall file1.c and > my-tool-chain-gcc -fPIC -g -c -Wall file2.c > > but now I dont know how to create a final shared library with these two .o > files and the file1.c code. > Do you have any idea.?? > I am trying this for two days continously but havent got any satisfcatory > solution for this(in plain terms - No solution for this ), once get I am > sure will post this with full description > PLz help !!!. > > > > > Rgds, > -J > > > > > > > > "..pain is temporary.....quitting lasts forever......" > > > > On Thu, Jun 30, 2011 at 10:43 AM, s.rawat <[email protected]>wrote: > >> HI Thanks for the reply.. >> here is my Android.mk : >> >> >> *LOCAL_PATH := $(call my-dir) >> >> include $(CLEAR_VARS) >> >> #LOCAL_LDLIBS := -llog >> >> LOCAL_MODULE := testEngine >> LOCAL_SRC_FILES := engine.c cpu.c IO.c memory.c >> # No special compiler flags. >> LOCAL_CFLAGS += -fno-builtin-printf -static -O3 -DCORE_FREQ=800 >> -DBAREMETAL -DPMU_CCNT_V7 >> LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog >> include $(BUILD_SHARED_LIBRARY) >> >> So you mean to say instead of putting engine.c IO.c memory.c i should >> mention the objct file for each and the LOCAL_MODULE equal to the final >> library like this : >> >> ** >> LOCAL_MODULE := testEngine >> LOCAL_SRC_FILES := engine.o cpu.o IO.o memory.o >> >> I will try and post the results ...!! >> >> Thanks again for the reply !! >> Rgds, >> -J >> ** >> * >> >> "..pain is temporary.....quitting lasts forever......" >> >> >> >> >> 2011/6/29 Enrique Ocaña González <[email protected]> >> >>> On Martes, 28 de Junio de 2011 23:27:31 Jessica escribió: >>> >>> > and placed it under the same folder where ndk-build was creating >>> > the .so file that is libs/armeabi> but when i am i trying to load the >>> > libary i am getting this error by >>> > >>> > doing the logcat >>> > >>> > D/dalvikvm(17719): Trying to load lib /data/data/<package name>/lib/ >>> > libTestengine.so 0x43e45c48 >>> > >>> > I/dalvikvm(17719): Unable to dlopen(<package name>/lib/ >>> > libTestengine.so): Cannot load library: link_image[1995]: failed to >>> > link libTestengine.so >>> >>> Are you sure that the library is being included in the APK? (unzip -l >>> bin/*.apk) >>> >>> If you use Eclipse, clean your project, rebuild it and look into the APK >>> again. If it's still not there, maybe you need to explicitly create some >>> rules >>> to include the library as an external precompiled library: >>> >>> jni/Application.mk ------ >>> >>> ... >>> APP_MODULES := testengine >>> ... >>> >>> jni/Android.mk ---------- >>> >>> ... >>> include $(CLEAR_VARS) >>> LOCAL_MODULE := testengine >>> LOCAL_SRC_FILES := relative/path/to/libTestengine.so >>> LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/relative/path/to/include/dir >>> include $(PREBUILT_SHARED_LIBRARY) >>> ... >>> >>> With these declarations, ndk-build will copy the library from its >>> original >>> place to libs and obj and the Eclipse build scripts will include it in >>> the >>> APK. >>> >>> -- >>> Enrique Ocaña >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "android-ndk" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/android-ndk?hl=en. >>> >>> >> > -- > You received this message because you are subscribed to the Google Groups > "android-ndk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/android-ndk?hl=en. > -- You received this message because you are subscribed to the Google Groups "Android Discuss" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/android-discuss?hl=en.
<<361.gif>>
