Возможный создать общую библиотеку со статической ссылкой пользовался библиотекой?

Binding RelativeSource={
    RelativeSource Mode=FindAncestor, AncestorType={x:Type ItemType}
}
...

атрибут по умолчанию RelativeSource Mode свойство. Полный набор допустимых значений дан здесь ( от MSDN):

  • PreviousData Позволяет Вам связывать предыдущий элемент данных (не, которые управляют, который содержит элемент данных) в списке отображаемых элементов данных.

  • TemplatedParent Относится к элементу, к которому шаблон (в который элемент с привязкой к данным существует), применяется. Это подобно установке TemplateBindingExtension и только применимо, если Привязка в шаблоне.

  • Сам Относится к элементу, на котором Вы устанавливаете привязку, и позволяет Вам связывать одно свойство того элемента к другому свойству на том же элементе.

  • FindAncestor Относится к предку в родительской цепочке элемента с привязкой к данным. Можно использовать это для привязки с предком определенного типа или его подклассов. Это - режим, который Вы используете, если Вы хотите определить AncestorType и/или AncestorLevel.

13
задан Sam Liao 28 August 2009 в 03:06
поделиться

3 ответа

Это будет работать:

# Generate position independent code (PIC)
gcc -fPIC -c -o xxx.o xxx.c

# Build a shared object and link with static libraries
ld -shared -static -o xxx.so xxx.o

# Same thing but with static libc
ld -shared -static -o xxx.so xxx.o -lc

Уточнение: флаг -static, если он задан gcc, передается компоновщику (ld) и указывает ему работать со статической версией (. a) библиотеки (указанной с флагом -l), а не динамической версии (.so).

Еще одна вещь: в моей системе (Debian) последний пример дает libc.a ... перекомпилируйте с ошибкой -fPIC . Совершенно уверен, что это означает, что libc.a, которая есть в моей системе, не была скомпилирована с -fPIC. apt-cache search libc pic все же дала некоторые результаты.

См. Также: Программная библиотека HOWTO , SO: объединение .so libs , ] ld (1) , gcc (1)

13
ответ дан 1 December 2019 в 23:48
поделиться

Если у вас есть какие-либо планы по переносимости вашей разделяемой библиотеки, используйте libtool (1) . Он обработает большинство деталей флагов компилятора за вас и сделает вашу жизнь бесконечно проще. Если вы не используете libtool , но позже решите, что хотите перенести свою программу на OS X или Windows, вам все равно придется изобретать ее заново.

1
ответ дан 1 December 2019 в 23:48
поделиться

С помощью Rpath можно проделать несколько хитроумных действий, чтобы исполняемый файл ELF или .so выполнял поиск своих зависимых файлов. so файлы сначала находятся в том же каталоге, что и он сам:

  • создайте короткий сценарий echo-rpath, состоящий из

    echo '-Wl, - rpath = $ ORIGIN'

  • , добавьте это в свою командную строку сборки как gcc - o file -lwhatever ʻecho-rpath` objects

(механизм echo не позволяет Make или оболочке съесть знак $ и обеспечивает его передачу в ld.)

3
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: