Как мне заставить Python увидеть librt?

Я только что установил Python-Dev с:

$ sudo apt-get install python-dev

так что я могу начать использовать P4Python. Но когда я пытаюсь импортировать P4, я получаю:

Traceback (most recent call last):
  File "/opt/pycharm-2.5/helpers/pycharm/utrunner.py", line 113, in <module>
    modules = [loadSource(a[0])]
  File "/opt/pycharm-2.5/helpers/pycharm/utrunner.py", line 44, in loadSource
    module = imp.load_source(moduleName, fileName)
  File "/home/nyap/proj/p4-rollback/Tools/Perforce/util/p4_rollback_unit_test.py", line 32, in <module>
    import P4
  File "/home/nyap/proj/p4-rollback/Tools/Perforce/p4python/build/lib.linux-x86_64-2.7/P4.py", line 312, in <module>
    import P4API
ImportError: /home/nyap/proj/p4-rollback/Tools/Perforce/p4python/build/lib.linux-x86_64-2.7/P4API.so: undefined symbol: clock_gettime

Что мне нужно сделать, чтобы заставить это работать?

1 ответ

Решение

Вот несколько вещей, чтобы попробовать.

  • Вы уверены, что librt.so доступно в вашей системе?

  • Вы можете попробовать запустить ldd на /home/nyap/proj/p4-rollback/Tools/Perforce/p4python/build/lib.linux-x86_64-2.7/P4API.so чтобы увидеть, с какими общими библиотеками он хочет связать. Является librt в списке? Это найдено?

  • Вы можете попробовать предварительную загрузку librt и посмотрим, поможет ли это:

    LD_PRELOAD=/path/to/librt.so python ...
    
  • Вы можете включить отладку в динамическом загрузчике, установив LD_DEBUG=libs:

    LD_PRELOAD=libs python
    

    Это отобразит информацию о том, какие библиотеки ищет загрузчик и где он их находит.

Надеюсь, одна из этих вещей поможет.

Другие вопросы по тегам