Получение ошибки при установке битрейта в интерфейсе CAN для ICS

Я пытаюсь установить битрейт в процессоре i.Mx6 в Android. Я использую утилиту iproute2 для установки битрейта для CAN-контроллера. Команда, используемая для установки битрейта, приведена ниже:

#ip link set can0 type can bitrate 125000

Пока я пытаюсь установить битрейт в Android с помощью команды ниже, я получаю сообщение об ошибке.

Сообщение об ошибке приведено ниже:

Фигня вместо аргументов \"битрейт...\". " "Попробуйте \"помощь по ip ссылке\""

Я проанализировал и отладил внутри исходный код этой утилиты и сравнил с исходным кодом утилиты Linux. Я обнаружил, что ошибка произошла в системном вызове dlsym().

   l = dlsym(dlh, buf);
    if (l == NULL)
            return NULL;

Предполагается, что эта функция возвращает некоторый действительный адрес. Но в моем случае он возвращает NULL.


person Salih    schedule 13.10.2012    source источник


Ответы (2)


Добавьте следующую строку в external/iproute2/ip/Android.mk

+LOCAL_LDFLAGS := -Wl,-export-dynamic -Wl,--no-gc-sections
include $(BUILD_EXECUTABLE)

Скомпилируйте снова, и это должно работать.

person asdf    schedule 10.07.2013

(1) (Исходный код Android)/external/iproute2/ip/iplink.c

#define LIBDIR "/usr/lib/"

to

#define LIBDIR "/usr/lib"

(2) (Исходный код Android)/external/iproute2/ip/Android.mk

+LOCAL_LDFLAGS := -Wl,-export-dynamic -Wl,--no-gc-sections
include $(BUILD_EXECUTABLE)

PS. Эта ошибка только на Android ICS (4.0.4).

person Alleen Wang    schedule 08.08.2014