Запустите Linux Makefile в Windows (.so файл) - PullRequest
0 голосов
/ 11 октября 2019

Я перехожу на компьютер с Windows, и мне нужно запустить мой Makefile, написанный на Linux, для создания библиотеки.

    HEADER=/usr/include
    INCLUDEDIR=include
    LIB_NAME=libpce.so
    SO_NAME=$(LIB_NAME).3.2
    REAL_NAME=$(SO_NAME).5
    SHARED_LIB=bin/$(REAL_NAME)

    mkdir $(HEADER)/libpce
    cp $(INCLUDEDIR)/pce.h $(HEADER)/libpce
    chmod 644 $(HEADER)/libpce/pce.h
    cp $(SHARED_LIB) /usr/lib/
    ln -f -s $(SO_NAME) /usr/lib/$(LIB_NAME)
    chmod 644 /usr/lib/$(REAL_NAME)
    ldconfig

Вывод его через терминал cygwin в Windows выдает ошибку какldconfig не определен, поэтому я попытался запустить их без команды ldconfig в конце.

Затем, когда мне нужно запустить другой Makefile для компиляции моего кода с аргументом -lpce, он говорит, что -lpce не определен. Я чувствую, что ldconfig был необходим, но я не могу запустить его в Windows.

Есть ли способ выполнить эту команду в Windows? Это проблема, или это может быть проблема с / usr / lib / paths?

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Ваш make-файл полон специфичных для Linux команд и путей. Они не переводят 1: 1. Может быть, вы можете разобраться с этим, но реальное решение не в том, чтобы писать свои make-файлы вручную. Используйте систему сборки, такую ​​как cmake , которая сгенерирует необходимые вам файлы сборки независимо от того, на какой системе вы работаете.

Вы также не упоминаете, что вы настроили на своем компьютере с Windows. Windows по умолчанию не поставляется для компиляции кода C ++. Вам нужно что-то установить, будь то MS Build Tools , WSL , MinGW / MSYS2 или Cygwin .

Хотя, если присмотреться, ваш фрагмент make-файла - не более чем сценарий bash. Вероятно, это может быть переведено в сценарий PowerShell, если вы окажетесь в 100% -ной среде Windows.

1 голос
/ 11 октября 2019

ldconfig не требуется в Cygwin.

-lpce не сообщает, потому что у вас есть libpce.so, но компоновщик ищет DLL. Решением является создание символической ссылки:

ln -s libpce.so libpce.dll

Чтобы углубиться, взгляните на:

...